JavaScript的原型链
实例对象会有一个隐式原型(__proto__
)对应其构造函数的显示原型(prototype
)
以上边原型图为例 现有一个Person的构造函数 可以得到以下关系
const p = new Person()
p.__proto__ === Person.prototype
实例对象查找属性的规则是按照隐式原型一层一层查找,直到为null
const p = new Person()
p.__proto__
p.__proto__.__proto__
p.__proto__.__proto__.__proto__
同时因为Object是一个函数
Object.__proto__ === Function.prototype
Function
- 所有的函数,方法的原型都是Function.prototype
- 并且Function最为特殊他的隐式原型等于自己的显示原型
Function.__proto === Function.prototype
Person.__proto__ === Function.prototype
Person.__proto__.__proto__
Person.__proto__.__proto__.__proto__