美文网首页
JS继承的多种方式

JS继承的多种方式

作者: 南山码僧 | 来源:发表于2020-04-04 12:16 被阅读0次

1:原型链继承

推荐指数:🦍🦍

特点:

❀ 将父类的实例作为子类的原型继承

❀ 这样子类实例化出来的对象即子类的实例又是父类的实例

优点:

❀ 同时继承了父类原型和实例上的属性

❀ 简单,易于实现。

缺点:

❀ 给子类添加原型属时必须要在子类实例化完成后

❀ 子类实例化的时候不能像父类构造器中传参初始化属性

❀ 无法实现多继承

2:调用构造函数继承

推荐指数:🦍🦍

特点:

❀ 使用父类的构造函数来增强子类实例,相当于继承了父类的实例属性。

❀ 实例化出来的对象仅是子类的实例,并不是父类的实例。

优点:

❀ 可以向父类传参初始化属性值

❀ 可以实现多实例属性的继承,在需要增强子类实例的地方call多个父类。

缺点:

❀ 不能继承父类的原型属性。

❀ 无法实现构造函数的复用。

❀ 每个实例都保存了一份父类的实例副本,影响性能。

3:组合继承(原型链继承 + 构造函数调用继承)

推荐指数:🦍🦍🦍🦍(多消耗了一点内存)

特点:

❀ 实例属性通过调用父类构造器来继承,原型上的属性通过原型链继承。

❀ 通过原型链继承后的子类实例即是父类的实例,也是子类的实例。

优点:

❀ 可以向父类传参初始化属性值。

❀ 通过构造函数调用继承可以实现实例属性的多继承。

❀ 解决了共享引用类型属性的问题。

❀ 函数可复用。

缺点:

❀ 调用了两次父类构造器,生成了两份实例。(事实上子类实例化的时候覆盖了原型上的那份实例)

4:寄生组合继承

推荐指数:🦍🦍🦍🦍🦍

特点:

❀ 构建一个空函数,然后将被继承函数原型上的属性存在空函数的原型上。

优点:

❀ 父类上的原型属性和实例属性分开继承。

寄生继承只继承了父类上的原型属性

调用构造器值继承了父类上的实例属性

❀ 避免了组合继承中两次调用构造器的问题。

缺点:

❀ 一点点复杂

6:ES6类继承(写过其他后端语言的孩子对于这种方式不要太熟悉)

推荐指数:🦍🦍🦍🦍🦍

关于类继承的方式还有很多组合方式,有机会再补充完整。

下边上一段最简单的类继承代码。因为我现在使用的脚手架缘故,所以是用TS写的。

相关文章

  • 继承

    研究学习了js内部的继承方式,以及多种方式的优点和缺点 目前项目中的 以前项目中的 js中继承有多种方式 原型继承...

  • js继承的多种方式

    《JavaScript高级程序设计》提到了6中继承方式:1.原型链继承2.借用构造函数(经典继承)3.组合继承4....

  • JS继承的多种方式

    1:原型链继承 推荐指数:?? 特点: ❀ 将父类的实例作为子类的原型继承❀ 这样子类实例化出来的对象即子类的实例...

  • js继承的多种实现方式

    Father作为父类,Child作为子类,继承的目标是让子类可以访问到父类的属性和方法 1.原型链继承 实现简单、...

  • JS寄生组合式继承

    JS的继承方式有很多种,最理想的继承方式是寄生组合式继承。组合继承(构造函数和原型的组合)会调用两次父类构造函数的...

  • JS继承方式

    js继承有多种继承方式,但最常用的是组合模式,代码例子如下 在这种方式下,把实例函数都保存在原型对象上,这样可...

  • javascript继承的多种方式

    JavaScript继承的多种方式和优缺点 1.原型链继承 问题: 1.引用类型的属性被所有实例共享,举个例子: ...

  • js 的继承的几种方式

    js 继承有6种方式的代码。 js继承的6种方式[https://www.cnblogs.com/Grace-zy...

  • JS继承

    JS中的继承 许多OO语言都支持两种继承方式:接口继承和实现继承; 因为JS中没有类和接口的概念 , 所以JS不支...

  • 扣丁学堂JavaScript实现面向对象继承的五种方式

    今天扣丁学堂老师给大家主要介绍了JS实现面向对象继承方式的详解,首先js是门灵活的语言,实现一种功能往往有多种做法...

网友评论

      本文标题:JS继承的多种方式

      本文链接:https://www.haomeiwen.com/subject/qcndphtx.html