本文总结自js高程
。
原型链
|
|
优点:
- 父类SuperType实例上的属性和方法 和 SuperType原型上的属性和方法,都会被子类SubType继承;
缺点:
- 子类SubType所有实例共享
一个SuperType的实例
,该实例原型上的属性,一个被修改,所有的子类SubType实例都会被修改; - 无法为父类SuperType的构造函数传递参数。
- 子类SubType所有实例共享
借用构造函数
|
|
优点:
- 可以为父类SuperType的构造函数传递参数。
缺点:
- 无法复用父类SubType上的函数,每个子类SubType的实例,都会创建一个同名的函数。
组合继承
|
|
优点:
- 可以复用父类SuperType原型上的函数。
- 可以为父类SuperType的构造函数传递参数。
缺点:
- SuperType 需要 new 两次
原型式继承
|
|
优点:
- 可以直接为一个对象(实例)扩展一个新对象。
缺点:
- 简单把对象放在新函数的原型上,不涉及到SuperType类及其构造函数初始化。
寄生式继承
|
|
优点:
- 可以直接为一个对象(实例)扩展(或增强)一个新对象。
缺点:
- 简单把对象放在新函数的原型上,不涉及到SuperType类及其构造函数初始化。
寄生组合式
|
|
优点:
- 完美。
缺点:
- 完美。