JS原型概念

235 阅读1分钟

简单总结下原型概念。

  1. 每个对象都有原型,除了根对象 Object.prototype 比较特殊,原型为 null
  2. 一个对象的原型指的是这个对象与其他同类对象的公有属性的集合
  3. 一个对象的原型的地址存在这个对象的__proto__属性里,比如 obj1 的原型地址就存在 obj1.__proto__
  4. 当我们说「obj1 的原型」时等价于说「obj1.__proto__
  5. Object 的原型是指Object.__proto__,不是 Object.prototype,因为 Object.prototyeObject 构造出来的对象的原型
  6. Object.prototype 是所有对象的原型(除了它自己),但 Object.prototype 有可能不是第一层原型,而是第二层原型,比如 arr 的第一层原型是 Array.prototype,第二层原型才是 Object.prototye

重点(来自方老师):

  • 内存图可以帮助理解概念
  • 你是谁构造的,你的原型就是谁的prototype属性对应的对象
  • 原型公式:被构造的对象.__proto__ === 其构造函数.prototype