要理解原型和原型链首先要知道几个概念:
- 在js里,继承机制是原型继承。继承的起点是 对象的原型(Object prototype)。
- 一切皆为对象,只要是对象,就会有 proto 属性,该属性存储了指向其构造的指针。
- Object prototype也是对象,其 proto 指向null。
- 对象分为两种:函数对象和普通对象,只有函数对象拥有『原型』对象(prototype)。
- prototype的本质是普通对象。
- Function prototype比较特殊,是没有prototype的函数对象。
- new操作得到的对象是普通对象。
- 当调取一个对象的属性时,会先在本身查找,若无,就根据 proto 找到构造原型,若无,继续往上找。最后会到达顶层Object prototype,它的 proto 指向null,均无结果则返回undefined,结束。
- 由 proto 串起的路径就是『原型链』。