原型链
实现原型链的基本模式
其实上图中的 SuperType Prototype 是 Object 构造函数的一个实例,上图将其省略了
确定原型和实例的关系
|
|
|
|
原型链的问题
- 引用类型值的原型属性会被所有实例共享。因此要在构造函数中定义属性,而不要在原型中定义属性
- 没有办法在不影响所有实例的前提下,给超类的构造函数传递参数
借用构造函数
在子类型构造函数的内部调用超类型构造函数
|
|
缺点:在超类构造函数中定义的方法无法复用;超类原型中的方法对子类型不可见
组合继承
|
|
原型式继承
|
|
返回的实例的原型为o
|
|
寄生式继承
|
|
寄生组合式继承
组合继承调用了两次超类构造函数的代码
为了解决这个问题,寄生组合式继承借用构造函数来继承属性,通过原型链的混成形式继承方法
基本思路:不必为了指定子类型的原型而调用超类的构造函数
基本模式如下:
使用方法: