在JS中继承是一个非常复杂的话题,比其他任何面向对象语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。在JS中想要达到继承公用成员的目的,需要采取一系列措施。
Js的继承在很多书里面细致的分了很多种类型和实现方式,大体上就是两种:对象冒充、原型方式。这两种方式各有优点和缺陷。
对象冒充继承:
【优点】可以实现多重继承;
【缺点】无法继承prototype域的变量和方法;
所有的成员方法都是针对this而创建的,所有的实例都会拥有一份成员方法的副本,属于深copy,比较浪费资源
原型继承:
【优点】所有实例共用一个pototype域,性能好些;
【缺点】不能传递参数;
注意 constructor 会指向父对象;