Javascript原型相关概念
1.原型(prototype):每个Javascript对象都有一个内部属性(proto)指向另一个对象,这个另一个对象就是叫原型;原型存在的目的是为了给其他继承对象提供属性;
2.原型链:每一个实例对象,如下图的person1或者Person.prototype都会有一个内部属性(proto)指向原型对象;子实例对象.proto === 父构造函数.prototype;一层层指向下去,直到指向null;
如上图所示,核心关系如下:
- 实例 → 原型:
person.__proto__ === Person.prototype - 原型 → 构造函数:
Person.prototype.constructor === Person - 构造函数 → 原型:
Person.prototype
JS继承
1.原型链继承:
缺点:实例对象共用了同一个this属性
2.构造函数继承
缺点:无法继承原型方法
3.组合继承
缺点:相对于寄生组合继承,构造函数调用次数多一次