js中常见的继承有几种方法

181 阅读2分钟

前言

JavaScript中常见的继承有几种方法?各自实现的思路和优缺点是什么呢?跟随本文的脚步一起来看看吧。


一、借用构造函数

也叫伪造对象或经典继承。

1、思路

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

2、缺点

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

二、组合继承

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

1、思路

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

2、优点

既通过在原型上定义方法,实现了函数复用,又能保证每一个实例都有他自己的数组。组合继承避免了原型链和借用构造函数的缺陷,融合了它们的优点,成为了JavaScript中常用的继承模式。

三、原型链继承

1、思路

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

四、寄生式继承

1、思路

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

2、缺点

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

五、寄生组合式继承

是JavaScript最常用的继承模式。

1、思路

通过构造函数来继承属性,通过原型链的混成形式来继承方法。 本质上,就是使用寄生式继承来继承超类型的原型,然后再将结果指定给子类型的原型。 开发人员普遍认为寄生组合式继承是引用类型最理想的继承方式,extend()方法采用了这样的方式。


总结

emmm......