您的位置:首页 > Web前端 > JavaScript

JavaScript原型链

2016-03-16 15:09 706 查看
JavaScript是基于原型链的面向对象语言,因此我们有必要好好了解一下原型链,在JavaScript中的所有对象,组成了一个原型树,沿着一个对象我们可以向上遍历,这就形成了一条原型链。

说到原型链,我们有必要了解一下什么是原型以及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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: