1.原型链继承

-  优点:最简单的方式,将子类的原型指向父类的实例即可。
-  缺点:一是引用类型的属性被所有实例共享,修改堆内存数据时会将所有实例数据都修改,但是直接创建新的存储对象就不会产生这个错误。二是创建子类实例时不能向超类型的构造函数中传递参数。(因此开发中很少单独使用原型链)

2.借用构造函数(类式继承)

-   优点:能实现属性的继承,也可以在子类型创建实例时为父类型传递参数。
-   缺点:借用构造函数虽然解决了刚才的问题,但不能继承构造函数的原型,只能继承构造函数的属性和方法。因此每次创建子类实例时都会调用构造函数、复制构造函数,会影响性能。
-   所以我们需要原型链+借用构造函数的模式,这种模式称为组合继承。

3.组合式继承

-   优点:组合式继承是比较常用的一种继承方法,其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又保证每个实例都有它自己的属性,结合了原型链继承和借用构造函数的优点。
。  缺点:如果再添加一个子类型给这个子类型原型上单独添加一个方法那么其他子类型也同时拥有这个方法,因为他们都指向同一个父类型原型。

4.原型式继承

原型式继承的的实现方法与普通继承的实现方法不同,原型式继承并没有使用严格意义上的构造函数,而是借
助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。

-   优点:没有创建自定义类型,因为只是套了个壳子返回对象,这个函数顺理成章就成了创建的新对象。
-  缺点:没用到原型,无法复用。

5.寄生继承

-   优缺点:跟构造函数继承类似,调用一次函数就得创建一遍方法,无法实现函数复用,效率较低

6.寄生组合式继承

-   结合组合继承优点、寄生继承的优点,目前JS继承中使用的都是这个继承方法。组合继承的缺点是两次调用父级构造函数,一次是在创建子级原型时一个是在子级构造函数内部,而这个缺点我们可以用寄生继承的特性来优化,减少一次调用父级构造函数,也就是继承父级构造函数的原型来创建子级原型。

JS继承方式及其优缺点总结相关推荐

  1. JavaScript中的几种继承方式及优缺点,你知道多少呢?

    原文连接:JavaScript中的几种继承方式及优缺点,你知道多少呢? 继承也是前端里面的重要的一个知识点,在实际工作中或者面试中也会经常的遇到,那么通过这篇文章我们详细的了解一下继承的几种方式以及各 ...

  2. JavaScript之各种继承方式和优缺点

    2019独角兽企业重金招聘Python工程师标准>>> JavaScript之各种继承方式和优缺点 原型链继承 function Parson(){this.name = 'hy' ...

  3. JavaScript中的几种继承方式及优缺点分析

    众所周知,继承是面向对象编程思想中的三大特点(封装,继承,多态)之一. 所谓继承,通俗来讲就是子类自动拥有父类的属性和方法, 继承可以提高代码的复用性. 继承也是前端里面的重要的一个知识点,在实际工作 ...

  4. js常见的的6种继承方式

    继承是面向对象的,继承可以帮助我们更好的复用以前的代码,缩短开发周期,提高开发效率:继承也常用在前端工程技术库的底层搭建上,在整个js的学习中尤为重要 常见的继承方式有以下的六种 一.原型链继承 原型 ...

  5. Js理解之路:Js常见的6中继承方式

    目录 一.JS 实现继承的几种方式 第一种:原型链继承 二.构造函数继承(借助call方法) 三.组合继承(原型链继承+构造函数继承) 第四种:原型式继承(借助Object.create) 第五种:寄 ...

  6. 探究JS常见的6种继承方式

    先看以下百科对(面向对象的继承)的解释! 通过以上精炼实用的解释,我们可以了解到继承的基本作用和功能!即可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法等. 广告:帮忙点击>> ...

  7. JavaScript六种继承方式的递进推演

    1. 原型链继承 function Parent1() {this.name = "Parent1"this.son = [1] } // 需要继承的子类 function Chi ...

  8. 聊一聊各种继承方式的前世今生

    目录 类式继承 优点 缺点 备注 构造函数继承 优点 缺点 备注 组合继承 优点 缺点 备注 原型继承 特点 备注 寄生继承 特点 备注 寄生组合继承 特点 备注 总结 阅读目标 掌握JS6大继承方式 ...

  9. js对象:实现继承的几种方式及优缺点

    目录 一.原型链继承 二.构造函数继承 三.组合继承(构造函数式继承+原型链继承) 四.拷贝继承(原型式继承) 五.寄生式继承 六.寄生组合式继承 七.使用ES6中class关键字 一.原型链继承 子 ...

最新文章

  1. [IoC容器Unity]第四回:使用范例
  2. Java环境变量的配置 (Win10环境下)
  3. SAP Spartacus b2b home页面的自动换行是怎么做到的
  4. 使用SAP OData offline库实现Android应用的离线(offline)模式
  5. TCP/IP(三):IP协议相关技术
  6. 从壹开始 [Admin] 之五 ║ 实现『按钮』级别权限配置
  7. python学习[第十四篇] 文件的输入与输出
  8. android textview 设置单行最大宽度和ellipsize省略号时整体变短的问题
  9. 通用计算机dsp采用,一种基于FPGA+DSP的通用飞控计算机平台设计
  10. PPT要怎么做?需掌握的一些制作设计技巧
  11. matlab 图片字符切割,基于MATLAB的图片中字符的分割与识别
  12. 查看 Chrome 下载的文件的真实下载地址
  13. 免费在线格式转换网站
  14. 小i机器人登陆美股,乘ChatGPT的东风能走多远?
  15. 简单的购物卡管理系统 可开源
  16. Time For Kids 很不错的英语学习周刊
  17. 浅谈溯源反制与防溯源
  18. 基于飞浆paddle的Android硬字幕提取 -- 二
  19. Unity笔记-vector3
  20. #1716 : 继承顺位(dfs)

热门文章

  1. Android重力感应 .
  2. 【推荐】机器学习入门到进阶学习路线图
  3. 2023 冰雪火龙大陆之无双神器 战神引擎传奇手游双端版
  4. 直播视频app源码的分享功能,是这样实现的
  5. wifi数传组网之精简mavlink
  6. Ubuntu安装pymysql报错
  7. Python+selenium自动获取Web端斗鱼直播信息
  8. IOS - 上APPSTORE为何因IPv6被拒?
  9. lisp点转为vla_怎样用AUTOLISP把选择的点连成多段线?求代码
  10. 深度学习和深度学习框架CNTK入门(一)