JS知识巩固之路——原型链

131 阅读1分钟

构造函数、实例原型、对象三者的关系

  • 构造函数创建对象
  • 构造函数的prototype属性指向一个对象(实例原型)
  • 每个JavaScript对象都有一个__proto__属性指向该对象的原型(实例原型)
  • 每个原型都有一个constructor 属性指向关联的构造函数

image.png

原型的原型

  • 原型对象就是通过 Object 构造函数生成的
  • Function.__proto__ === Function.prototype
  • Object.prototype.__proto__ 的值为 null (没有原型)

image.png

原型链

  • 关联的原型组成的链状结构就是原型链

image.png

继承

  • 当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。
  • 当获取 person.constructor 时,其实 person 中并没有 constructor 属性,当不能读取到constructor 属性时,会从 person 的原型也就是 Person.prototype 中读取,正好原型中有该属性

image.png

参考文章:JavaScript深入之从原型到原型链