继承

ES5的继承

1、构造函数实现继承

其基本思想为:在子类型的构造函数中调用超类型构造函数。

优点:
1.可以向超类传递参数
2.解决了原型中包含引用类型值被所有实例共享的问题

缺点:
方法都在构造函数中定义,函数不能复用,另外超类型原型中定义的方法对于子类型而言都是不可见的。

2、借助原型是实现继承

基本思想:借助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。

缺点:
同原型链实现继承一样,包含引用类型值的属性会被所有实例共享。

3、组合方式实现继承

组合继承指的是将原型链和借用构造函数技术组合到一块,从而发挥二者之长的一种继承模式。

基本思路:使用原型链实现对原型属性和方法的继承,通过借用构造函数来实现对实例属性的继承,既通过在原型上定义 方法来实现了函数复用,又保证了每个实例都有自己的属性。

优点:
1.可以向超类传递参数
2.每个实例都有自己的属性
3.实现了函数复用

缺点:
无论什么情况下,都会调用两次超类型构造函数:一次是在创建子类型原型的时候,另一次是在子类型构造函数内部

ES6的继承

通过extends关键字实现继承

你可能感兴趣的:(继承)