JavaScript原型链
2016-03-16 15:09
706 查看
JavaScript是基于原型链的面向对象语言,因此我们有必要好好了解一下原型链,在JavaScript中的所有对象,组成了一个原型树,沿着一个对象我们可以向上遍历,这就形成了一条原型链。
说到原型链,我们有必要了解一下什么是原型以及Function和Object的关系。
1.原型:
JavaScript中每个对象都有一个对应的prototype的原型对象,原型主要是用来继承的。
很显然,myInstance.add()的结果是:your add function。但我们是否关注过如下代码的结果呢?
2.Function和Object:
我们需要了解JavaScript的几条特性:
i).JavaScript中,函数也是对象;
ii).一切对象都有一个根源:Object.prototype,根源之上没有其他根源,是null;
iii).Function.__proto__===Function.prototype的结果为真,这是Function特有的。Function的prototype是一个内置函数,一切函数都派生自这个内置函数,该内置函数对象的__proto__指向根源对象。
综合以上所述,我们可以读出如下的图:
参考资料:https://blog.oyanglul.us/javascript/understand-prototype.html
说到原型链,我们有必要了解一下什么是原型以及Function和Object的关系。
1.原型:
JavaScript中每个对象都有一个对应的prototype的原型对象,原型主要是用来继承的。
var Foobar=function(){ //你的代码 }; Foobar.prototype.add=function(){ console.log("your add function"); } var myInstance=new Foobar(); myInstance.add()//结果:your add function
很显然,myInstance.add()的结果是:your add function。但我们是否关注过如下代码的结果呢?
console.log(myInstance.__proto__===Foobar.prototype);//true console.log(Foobar.__proto__===Function.prototype);//true上面两个的结果都是true。myInstance继承了add方法,是不是感觉有一个__proto__的属性将myInstance,Foobar和Function关联起来了呢?没错,__proto__就是原型链的索引。
2.Function和Object:
我们需要了解JavaScript的几条特性:
i).JavaScript中,函数也是对象;
ii).一切对象都有一个根源:Object.prototype,根源之上没有其他根源,是null;
iii).Function.__proto__===Function.prototype的结果为真,这是Function特有的。Function的prototype是一个内置函数,一切函数都派生自这个内置函数,该内置函数对象的__proto__指向根源对象。
综合以上所述,我们可以读出如下的图:
参考资料:https://blog.oyanglul.us/javascript/understand-prototype.html
相关文章推荐
- js实现内容显示并使用json传输数据
- js插件心得
- js将阿拉伯数字转换成大写金额
- JS判断密码强度的代码
- weblogic 更新文件(.class,.jsp)等不生效解决
- 简单JavaScript验证输入信息
- 使用jstack分析cpu消耗过高的问题
- JS_正则_match
- zepto.js
- servlet+jsp实现分页查询+导出
- javascript入门
- html写个超连接通过jstl传参问题
- JSON.parse()和JSON.stringify()
- JSP页面展示多个PDF文件
- 用js onselectstart事件鼠标禁止选中文字
- javascript笔记—— Math.sin() 与 Math.cos() 用法 来自博客园 岁月星空
- JavaScript 踩坑心得— 为了高速(下)
- JavaScript 踩坑心得— 为了高速(下)
- switf 字符串转 json数据 ,json数据再转化为数组
- JavaScript-----获取本月第一天、最后一天的日期