js继承有多种继承方式,但最常用的是组合模式,代码例子如下
在这种方式下,把实例函数都保存在原型对象上,这样可以实现函数的复用,通过Super.call(this,age)继承父类的属性。这种方式有一点缺点,子类原型上有一份多余的父类实例属性,因为父类的构造函数被调用了两次,生成了两份,而子类上的那份覆盖了子类原型上的那一份原型,存在内存浪费的情况。
针对上述情况提出了寄生组合方式,代码如下:
这种方式中,提出了中间函数,切掉了原型对象上多余的父类实例属性。
随着ES6标准的提出,出现了更优雅的继承方式,更接近于面向对象的编程方式,主要关键字是class和extends,代码如下: