基础记录:Javascript原型与继承

20 阅读1分钟

Javascript原型相关概念

1.原型(prototype):每个Javascript对象都有一个内部属性(proto)指向另一个对象,这个另一个对象就是叫原型;原型存在的目的是为了给其他继承对象提供属性;

2.原型链:每一个实例对象,如下图的person1或者Person.prototype都会有一个内部属性(proto)指向原型对象;子实例对象.proto === 父构造函数.prototype;一层层指向下去,直到指向null;

image.png

如上图所示,核心关系如下:

  • 实例 → 原型person.__proto__ === Person.prototype
  • 原型 → 构造函数Person.prototype.constructor === Person
  • 构造函数 → 原型Person.prototype

JS继承

1.原型链继承:

22233.png

缺点:实例对象共用了同一个this属性

2.构造函数继承

6677.png

缺点:无法继承原型方法

3.组合继承

11122.png

缺点:相对于寄生组合继承,构造函数调用次数多一次

4.寄生组合继承(最优解)

112.png