理解 JavaScript 的 Proto 和 Prototype

__proto__ 是 object 的一个属性,prototype 是 function 的一个属性。

__proto__ 指向它的构造函数的 prototype, prototype指向一个constructor为该 function 的 object.

所以 __proto__ 也有自己的 __proto__ ,也就是原型链。

原型链

当请求一个对象的属性时,首先会在对象内部寻找,如果不存在,则会到 __proto__ 中查找,如果不存在,就会查找 __proto__ 的 __proto__ ,直到 null 为止。

实例化对象过程

进行 new Foo() 操作会进行以下过程:

  1. 首先会初始化一个空 {}
  2. 然后将 {} 的 __proto__ 指向 Foo 的 prototype
  3. 接着执行 Base.call({}) 将 this 作用域交予 {}
FrostMiKu
Built with Hugo
主题 StackJimmy 设计