先要明白几个概念
- 所有对象都是通过
new 函数
创建 - 函数也是一个对象
原型prototype
所有函数都有prototype
这个属性 ,该属性值是一个对象
所有函数的prototype中都有一个属性constructor, 高属性指向函数本身
隐式原型 __proto__
所有对象(函数)都有__proto__
属性,
对象的proto指向创建该对象的构造函数的prototype(也就是指向同一块内存空间)
image.png
访问对象的一个属性或者方法时
- 从自身寻找
- 自身没有,从隐式原型
__proto__
查找 - 在原型链中依次查找
特殊
- Function是在内存创建的,所以
Function.__proto__ == Function.prototype
- 所有对象最终都会继承Object.ptototype
- Object.prototype.proto === null