继承

简单说说JS中的继承

1.原型链继承 JavaScript 实现继承的基本思想:通过原型将一个引用类型继承另一个引用类型的属性和方法。

2.借用构造函数继承(伪造对象或经典继承) JavaScript 实现继承的基本思想:在子类构造函数内部调用超类型构造函数。 通过使用 apply()和 call()方法可以在新创建的子类对象上执行构造函数。

3.组合继承(原型+借用构造)(伪经典继承) JavaScript 实现继承的基本思想:将原型链和借用构造函数的技术组合在一块,从而发挥两者之长的一种继承模式。将原型链和借用构造函数的技术组合到一起,从而取长补短发挥两者长处的一种继承模式。

4.原型式继承 JavaScript 实现继承的基本思想:借助原型可以基于已有的对象创建新对象,同时还不必须因此创建自定义的类型。

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

6.寄生组合式继承 JavaScript 实现继承的基本思想:通过借用函数来继承属性,通过原型链的混成形式来继承方法

常见的继承有几种方法

(1)借用构造函数。也叫伪造对象或经典继承。

思路:

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

缺点:

方法都在构造函数中定义,函数的复用就无从谈起。在超类型的原型中定义的方法,对子类而言也是不可见的,结果所有的类型都只能使用构造函数模式。

(2)组合继承。也叫伪经典继承。指的是将原型链和借用构造函数的技术组合到一起,从而发挥二者之长。

思路:

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

优点:

既通过在原型上定义方法实现了函数复用,又能保证每一个实例都有它自己的数组。

组合继承避免了原型链和借用构造函数的缺陷,融合了他们的优点,成为 JavaScript中常用的继承模式。

(3)原型链继承。

思路:

借助原型可以基于已有的对象创建对象,同时还不必因此创建自定义类型。在 object()函数内部,先创建一个临时的构造函数,然后将传入的对象作为这个构造函数的原型,最后返回了这个临时类型的一个新实例。

(4)寄生式继承。

思路:

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

缺点:

使用寄生式继承来为对象添加函数,会由于不能做到函数复用二降低效率,这一点和构造函数模式类似。

(5)寄生组合式继承。

是 JavaScript 最常用的继承模式。

思路:

通过借用构造函数来继承属性,通过原型链的混成形式来继承方法。

本质上,就是使用寄生式继承来继承超类型的原型,然后再将结果指定给子类型的原型。

开发人员普遍认为寄生组合式继承时引用类型最理想的继承范式。

extend()方法才用了这样的方式。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容