js原型链
js原型链
- js中每个函数都有一个prototype属性,这个属性指向函数的原型对象(该对象初始内容只包含一个键值对: constructor: f () ,后续通过构造函数的prototype属性添加的内容,将会以键值对的形式出现在该对象中)
- 每个对象都有一个__proto__属性,这个属性指向该对象的原型
- 每个原型都有一个constructor属性,这个属性指向关联的构造函数
总结:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型的内部指针。(instance.__proto__=== constructor.prototype)
所有构造函数的__proto__指针指向都是Function.prototype,所有对象的__proto__指针最终指向都是Object.prototype,
而Object.prototype的__proto__属性值为null。
利用原型链查找标识符:instance.__proto__ ===> constructor.prototype.__proto__ ===> Object.prototype.__proto__ ===> null
(这里提及到了原型链,补充一个vue内置关系:VueComponent.prototype.__proto__ === Vue.prototype)