2018-01-18

原型和原型链

原型

每个函数都有一个属性prototype,该属性的值是一个对象,该对象即是原型对象。且在这个对象中存在一个constructor属性,该属性指向构造函数。

原型链

每个对象中都有一个__proto__属性,其指向创建这个对象的构造函数的prototype属性。当对象访问某个属性或者方法时,会首先在对象内部进行查找是否有此属性,若有,则使用此属性;若没有,则沿着__proto__继续查找,即查找创建这个对象的构造函数的原型对象身上是否有这个属性,若有,则使用;若没有,则查找原型对象的原型对象身上......

即:

var obj = {};

obj.__proto__ == Object.prototype;   //返回值为true

原型链与原型的关系图如下所示:

你可能感兴趣的:(2018-01-18)