JS原型对象操作实例分析


Posted in Javascript onJune 06, 2020

本文实例讲述了JS原型对象操作。分享给大家供大家参考,具体如下:

万物皆对象,函数也同样是对象,是特殊的函数对象

function fn() {}
let a = new fn();
let b = new Function()

console.log(typeof a);  // object 
console.log(typeof b);  // function

打开浏览器,输入fn,会发现fn有一个prototype(原型)属性,这个属性是一个指针,指向原型对象,这个对象包括了特定类型所有共享的属性和方法。
换句话说,prototype对象包含了函数所有的共享属性和方法。

function fn() {}
fn.prototype.a = 18;
fn.prototype.b = "b";
fn.prototype.test = function() {
 console.log(123);  
}
var r = new fn();
console.log(r.a);  // 18

我们直接在函数fn的原型属性上加了两个属性和一个方法,实例化后便可以访问原型中的值。

  • 原型对象有一个constructor属性,它也是一个指针,它指向原来的函数,也就是说,fn.prototype.constructor == fn。
  • 所有的实例都有这个原型对象,因此实例可以访问到原型对象中的属性和方法。

JS原型对象操作实例分析

那么实例怎么搜索变量或者方法的值呢?首先,函数实例会在函数本身上去寻找该变量,如果没有找到,会在原型对象上寻找变量。

function fn() {}
fn.prototype.a = 18;
fn.prototype.b = "b";
fn.prototype.test = function() {
 console.log(123);
}
var a = new fn();
var b = new fn();
b.a = 20
console.log(b.a);  // 20
console.log(a.a);  // 18

创建了两个实例,在b实例上手动添加了一个a属性,在fn的原型对象上也有一个a属性,那么对于b实例会优先访问本身的属性而不是原型上的属性。

参考内容:JavaScript高级程序设计

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript中的apply()方法和call()方法使用介绍
Jul 25 Javascript
jquery创建表格(自动增加表格)代码分享
Dec 25 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
Apr 17 Javascript
首页图片漂浮效果示例代码
Jun 05 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
Jun 28 Javascript
AngularJS教程之MVC体系结构详解
Aug 16 Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 Javascript
JavaScript中双符号的运算详解
Mar 12 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
使用cropper.js裁剪头像的实例代码
Sep 29 Javascript
深入浅析JSONAPI在PHP中的应用
Dec 24 Javascript
面试题:react和vue的区别分析
Apr 08 Javascript
JS中的继承操作实例总结
Jun 06 #Javascript
ES6 async、await的基本使用方法示例
Jun 06 #Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 #Javascript
ES6 Generator基本使用方法示例
Jun 06 #Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 #jQuery
ES6 Symbol在对象中的作用实例分析
Jun 06 #Javascript
微信小程序多列表渲染数据开关互不影响的实现
Jun 05 #Javascript
You might like
PHP中的替代语法介绍
2015/01/09 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
List Installed Hot Fixes
2007/06/12 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
优秀信贷员先进事迹
2014/01/31 职场文书
个人党性剖析材料
2014/02/03 职场文书
银行优秀员工事迹
2014/02/06 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
单位委托书格式范本
2014/09/29 职场文书
安全承诺书
2015/01/19 职场文书
小型婚礼主持词
2015/06/30 职场文书
2016新年感言
2015/08/03 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫