JS 原型和原型链的理解(图)

原型

image

原型图(图片来源:JavaScript高级程序设计)

  • 构造函数Person 的原型(Person.prototype) 指向 Person Prototype
  • 原型Person Prototype 的构造函数(Person.prototype.constructor) 指向 Person
  • 实例person1 的隐式原型(person1._proto_ )指向 Person Prototype
  • 实例person2 的隐式原型(person2._proto_ )指向 Person Prototype


原型链

image

原型链图(图片来源:自己画的)

  • 第一行:所有类型默认都继承 Object
  • 第二行:Super(构造函数) 的原型,默认继承自 Object
  • 第三行:Sub (构造函数) 的原型,是 Subper 的一个实例,继承自 Super
  • 第四行:subInstance (实例) ,是 Sub 的一个实例,继承自 Sub

代码实现

function Super() {};
function Sub() {};

Sub.prototype = Object.create(Super.prototype);
// ↑ 或者 Sub.prototype = new Super();(不推荐,子类会具有父类实例的方法,可能不是我们需要的)
Sub.prototype.constructor = Sub; // 修改原型对象,一般要同时修改,constructor 属性的指向

const subInstance = new Sub();
posted @ 2021-03-02 21:17  Better-HTQ  阅读(112)  评论(0编辑  收藏  举报