答案:六种方式

  • 一、原型链继承

    • 缺点:
      1. 引用类型的属性被所有实例共享
      1. 在创建 Child 的实例时,不能向 Parent 传参
  • 二、借用构造函数(经典继承)

    • 优点:

      1. 避免了引用类型的属性被所有实例共享
      1. 可以在 Child 中向 Parent 传参
    • 缺点:

      1. 方法都在构造函数中定义,每次创建实例都会创建一遍方法。
  • 三、组合继承

    • 优点:
      1. 融合原型链继承和构造函数的优点,是 JavaScript 中最常用的继承模式。
  • 四、原型式继承

    • 缺点:
      1. 包含引用类型的属性值始终都会共享相应的值,这点跟原型链继承一样。
  • 五、寄生式继承

    • 缺点:
      1. 跟借用构造函数模式一样,每次创建对象都会创建一遍方法。
  • 六、寄生组合式继承

    • 优点:
      1. 这种方式的高效率体现它只调用了一次 Parent 构造函数,并且因此避免了在 Parent. prototype 上面创建不必要的、多余的属性。
      1. 与此同时,原型链还能保持不变;
      1. 因此,还能够正常使用 instanceof 和 isPrototypeOf。
    • 开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式

参与互动

JS篇(010)-JavaScript 继承的方式和优缺点的更多相关文章

  1. JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)

    JavaScript继承的6种方法 1,原型链继承 2,借用构造函数继承 3,组合继承(原型+借用构造) 4,原型式继承 5,寄生式继承 6,寄生组合式继承 1.原型链继承. <script t ...

  2. 【 js 基础 】Javascript “继承”

    是时候写一写 "继承"了,为什么加引号,因为当你阅读完这篇文章,你会知道,说是 继承 其实是不准确的. 一.类1.传统的面向类的语言中的类:类/继承 描述了一种代码的组织结构形式. ...

  3. js继承的方式及其优缺点

    js继承方法 前因:ECMAScript不支持接口继承,只支持实现继承 一.原型链 概念:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针,让 ...

  4. JS 8-5 OOP 实现继承的方式

    function Person(){} function Student(){} Student.prototype = Person.prototype;//此继承方式是错误的,当我们改变Stude ...

  5. 【编程题与分析题】Javascript 之继承的多种实现方式和优缺点总结

    [!NOTE] 能熟练掌握每种继承方式的手写实现,并知道该继承实现方式的优缺点. 原型链继承 function Parent() { this.name = 'zhangsan'; this.chil ...

  6. javascript继承(四)—prototype属性介绍

    js里每一个function都有一个prototype属性,而每一个实例都有constructor属性,并且每一个function的prototype都有一个constructor属性,这个属性会指向 ...

  7. 一种基于ES5的JavaScript继承

    关于JavaScript继承,方式非常多,包含compile-to-javascript的语言TypeScript, CoffeeScript以及站点MDN, GitHub, Modernizr各种p ...

  8. javascript 中继承实现方式归纳

    转载自:http://sentsin.com/web/1109.html 不同于基于类的编程语言,如 C++ 和 Java,javascript 中的继承方式是基于原型的.同时由于 javascrip ...

  9. javascript继承(七)—用继承的方式实现照片墙功能

    照片墙DEMO下载 注意:图片有四种类型:1可放大:2可拖动:3既可放大也可拖动:4都不行.由于每个图片的构造函数不同而不同(目前在火狐上调试的,其它的浏览器可能不行,请见谅,主要讲继承的思想.以后会 ...

  10. JavaScript继承方式详解

    原文链接 : http://segmentfault.com/a/1190000002440502 js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继 ...

随机推荐

  1. ecplise项目启动出现permgen space异常内存不够

    1. java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域 ...

  2. Angular单页应用程式 (SPA)+Azure AD重新导向登入

    一.app.module.ts中设定应用程式 1.将MSAL Angular相关设置封装为auth.module.ts import { NgModule } from '@angular/core' ...

  3. python下载站长素材免费简历模板(xpath)

    import os.path import requests from lxml import etree if __name__ == '__main__': if not os.path.exis ...

  4. Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2)【II】

    继续前一篇的问题,为什么Selenium RC中的Selenium Server需要以这种代理服务器的形式存在?其实,这和浏览器的"同源策略"(The Same Origin Po ...

  5. Power shell 读取电量,改变屏幕亮度

    1. Get-Wmiobject  -List win32*  # 列出所有win32_信息(基本的BIOS,Battery , Memory, processor) 2.Get-WmiObject ...

  6. OS-lab1

    OS-lab1 boot boot文件夹中只有start.S文件,这个文件用于初始化内核.关掉中断,设置内核栈,并跳转到main函数. init init.c 执行初始化操作. main.c 主函数, ...

  7. FTP主动模式(Port)和被动模式(Passive)的区别

    1.FTP的PORT(主动模式): PORT中文称为主动模式,工作的原理: FTP客户端(1024以上端口)连接到FTP服务器的21端口,发送用户名和密码登录, 登录成功后要list列表或者读取数据时 ...

  8. hooks组件中,使用防抖节流的方法。

    在类组件中,使用节流函数可以在componentDidMount中定义. 而在hooks函数中,该怎么定义呢,我们一起看看. 要使用useCallback包起来,返回一个记忆的缓存函数,这样才能达到节 ...

  9. PS 查看进行状态

    原文:https://blog.csdn.net/lyndon_li/article/details/114295654 ps 查看进行状态有如下几种: ... PROCESS STATE CODES ...

  10. [js函数] shallowEqual

    const isBasicType = (t: any) => { return t === "number" || t === "string" || ...