JavaScript - 继承
继承
原型链
让一个引用类型继承另一个引用类型的属性和方法
由
Prototype不断把实例和原型对象联系起来的结构过程
- 原型对象通过 
constructor属性指向构造函数 - 实例通过 
Prototype属性指向原型对象 
- 原型对象通过 
 缺陷
- 在赋值时,赋给变量的是它在内存中的地址
 - 实例没办法向构造函数传参
 
继承方式
借用构造函数继承
- 子类型的构造函数中借用父类型的构造函数(为了解决引用类型)
 
1  | 
  | 
组合继承
- 属性独立,方法复用 最常用!
 - 原型链负责原型对象上的方法,call借用构造函数负责让子类型拥有各自的属性
 - 缺点:子类型会调用两次父类型的构造函数
 
1  | function A(name) {  | 
原型式继承
- Object.create(),对对象的浅复制,父子对象的指针指向同一个引用类型
 
1  | var A = {  | 
寄生式继承(工厂模式)
1  | function createA(name) {  | 
寄生组合式继承
- 换一种方式实现 
B.prototype = new A() - 避免两次调用父类的构造函数
 
1  | // 默认A是父类型,B是子类型  | 
ES6 extends
- 属性放在构造函数里,方法绑定在原型对象上
 





