js中的继承

67 阅读2分钟

继承有以下六种方法

  1. 原型链继承
  2. 借用构造函数继承
  3. 组合构成
  4. 型式继承
  5. 寄生式继承
  6. 寄生组合式继承

1.原型链继承

通过原型将一个引用类型继承另一个引用类型的属性和方法

在object()函数内部,先创建一个临时的构造函数,然后将传入的对象作为这个构造函数的原型,最后返回了这个临时类型的一个新实例。

2.借用构造函数继承

在子类构造函数内部调用超类型构造函数,通过使用apply()和call()方法可以在新创建的子类对象上执行构造函数。

缺点:方法都在构造函数中定义,函数的复用性就很差,在超类型的原型中定义的方法,子类也是不可见的,结果所有的类型都只能使用构造函数模式。

3.组合继承(原型+借用构造)

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

思路:使用原型链实现对原型属性和方法的继承,通过借用构造函数来实现实例属性的继承。

优点:即通过在原型上定义方法实现函数复用,又能保证每一个实例都有它自己的数组。所以js中常用的继承模式。

4.型式继承

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

5.寄生式继承

创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真正是它做了所有工作一样返回对象。寄生式继承式原型式继承的加强版。

缺点:使用寄生式继承来为对象添加函数,会由于不能做到函数复用而降低效率。

6.寄生组合式继承

最常用的继承模式

通过借用函数来继承属性,通过原型链的混成形式来继承方法。 本质上,就是使用了寄生式继承超类型的原型,然后再将结果指定给子类型的原型。