简单总结下原型概念。
- 每个对象都有原型,除了根对象
Object.prototype比较特殊,原型为null - 一个对象的原型指的是这个对象与其他同类对象的公有属性的集合
- 一个对象的原型的地址存在这个对象的
__proto__属性里,比如obj1的原型地址就存在obj1.__proto__ - 当我们说「
obj1 的原型」时等价于说「obj1.__proto__」 Object的原型是指Object.__proto__,不是Object.prototype,因为Object.prototye是Object构造出来的对象的原型- Object.prototype 是所有对象的原型(除了它自己),但 Object.prototype 有可能不是第一层原型,而是第二层原型,比如 arr 的第一层原型是 Array.prototype,第二层原型才是 Object.prototye
重点(来自方老师):
- 内存图可以帮助理解概念
- 你是谁构造的,你的原型就是谁的
prototype属性对应的对象 - 原型公式:
被构造的对象.__proto__ === 其构造函数.prototype