Javascript的ES5,ES6的7种继承详解

Javascript的ES5、ES6的7种继承详解

Javascript是一种面向对象的语言,继承是面向对象编程中的重要概念。ES5和ES6是Javascript中的两个版本,都提供了不同的继承方式。本攻略将介绍Javascript中ES5和ES6的7种继承方式。

1. 原型链继承

原型链继承是Javascript中最基本、最常用的继承方式。通过将父类的实例作为子类的原型,实现子类对父类成员变量和方法的继承。

实现示例

function Parent() {
    this.name = 'parent';
    this.play = [1, 2, 3];
}

function Child() {
    this.type = 'child';
}

Child.prototype = new Parent();

2. 构造函数继承

构造函数继承是通过在子类的构造函数中调用父类构造函数,实现对父类成员变量和方法的继承。

实现示例

function Parent() {
    this.name = 'parent';
    this.play = [1, 2, 3];
}

function Child() {
    Parent.call(this);
    this.type = 'child';
}

3. 组合继承

组合继承是将原型链继承和构造函数继承结合起来使用,实现继承。

实现示例

function Parent() {
    this.name = 'parent';
    this.play = [1, 2, 3];
}

function Child() {
    Parent.call(this);
    this.type = 'child';
}

Child.prototype = new Parent();

4. 原型式继承

原型式继承是使用一个中间对象作为父类实例的原型,实现对父类成员变量和方法的继承。

实现示例

function createObj(o) {
    function F() {}
    F.prototype = o;
    return new F();
}

var parent = {
    name: 'parent',
    play: [1, 2, 3]
};

var child = createObj(parent);
child.type = 'child';

5. 寄生式继承

寄生式继承是在原型式继承的基础上,对中间对象进行扩展从而使其具有更多的功能。

实现示例

function createObj(o) {
    function F() {}
    F.prototype = o;
    return new F();
}

function createChild(parent) {
    var child = createObj(parent);
    child.type = 'child';
    return child;
}

var parent = {
    name: 'parent',
    play: [1, 2, 3]
};

var child = createChild(parent);

6. 寄生组合式继承

寄生组合继承是在组合继承的基础上,将父类的原型赋值给中间对象,并将子类的原型指向中间对象,从而达到不重复调用父类构造函数,提高性能的效果。

实现示例

function Parent() {
    this.name = 'parent';
    this.play = [1, 2, 3];
}

function Child() {
    Parent.call(this);
    this.type = 'child';
}

(function() {
    var F = function() {};
    F.prototype = Parent.prototype;
    Child.prototype = new F();
})();

7. class继承

class继承是ES6新增的继承方式,通过使用class语法糖,实现对父类成员变量和方法的继承。

实现示例

class Parent {
    constructor() {
        this.name = 'parent';
        this.play = [1, 2, 3];
    }
}

class Child extends Parent {
    constructor() {
        super();
        this.type = 'child';
    }
}

以上就是Javascript中ES5和ES6的7种继承方式的详细讲解和示例,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript的ES5,ES6的7种继承详解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 使用Bash Shell获取文件名和目录名的简单方法

    获取文件名和目录名在Bash Shell中是一个常见的需求,可以使用一些简单的方法来实现。 获取文件名和目录名的简单方法 获取文件名 要获取文件名,可以使用basename命令。该命令将返回路径中的文件名部分。 语法如下: basename path [suffix] 其中,path是带有文件名的目录路径,suffix是要删除的文件名后缀。 如果未指定suf…

    other 2023年6月26日
    00
  • windows7系统环境变量怎么办 使用PATH修改环境变量的方法介绍

    Windows7系统的环境变量可以通过修改PATH来实现。以下是修改环境变量的完整攻略: 1. 打开“高级系统设置”的对话框 1.1. 点击鼠标右键选择“计算机”,并选择“属性”菜单项1.2. 点击“高级系统设置”链接1.3. 点击“环境变量”按钮 2. 修改“PATH”环境变量 2.1. 选中“系统变量”区域的“PATH”变量2.2. 点击“编辑”按钮2.…

    other 2023年6月27日
    00
  • android 仿微信demo——登录功能实现(服务端)

    关于“android 仿微信demo——登录功能实现(服务端)”的完整攻略,我将分为以下几方面进行讲解。 1. 项目背景 此项目是一个基于 Android 平台的仿微信应用,实现了微信的一些基本功能,例如登录、注册、发送文字、语音和图片等消息,以及添加好友等功能。其中,登录功能实现需要设计前端和后端的交互,并且需要使用到一些常用的技术,例如 HTTP、Jso…

    other 2023年6月27日
    00
  • 荣耀50怎么清理内存? 荣耀50手机内存不足的多种解决办法

    荣耀50怎么清理内存? 荣耀50是一款功能强大的智能手机,但有时候可能会遇到内存不足的问题。下面是一些清理内存的方法,帮助您解决荣耀50手机内存不足的问题。 1. 关闭不必要的后台应用程序 后台运行的应用程序会占用手机的内存资源。通过关闭不必要的后台应用程序,可以释放一部分内存空间。以下是关闭后台应用程序的步骤: 在荣耀50手机上,向上滑动屏幕,打开最近使用…

    other 2023年8月2日
    00
  • Java 八道经典面试题之链表题

    Java 八道经典面试题之链表题 什么是链表? 链表是一种常见的线性数据结构,与数组最大的区别是:链表的元素在物理空间上不是连续的,而是靠指针相连。链表由一连串的结点组成,每个结点都包含两部分内容,一部分是存储数据的数据域,另一部分是存储下一个结点地址的指针域,也可以包含前一个结点的地址指针域(双向链表)。 单链表 & 双向链表 单链表是每个结点只指…

    other 2023年6月27日
    00
  • 云原生要素配置分离ConfigMap创建方式

    下面是“云原生要素配置分离ConfigMap创建方式”的完整攻略: 什么是云原生要素配置分离? 在云原生架构中,配置管理是非常关键的一项工作。云原生要素配置分离指的是,将配置与应用程序本身分离,存储到 ConfigMap 中,将应用程序与其配置解耦。这样做的好处是,可以很方便地对应用程序进行升级、回滚或者替换,而无需重新配置应用。 创建 ConfigMap …

    other 2023年6月25日
    00
  • 知乎上的有哪些较好的壁纸网站?

    以下是关于“知乎上的有哪些较好的壁纸网站?”的完整攻略,包含两个示例。 知乎上的较好的壁纸网站 是知乎上的较好的壁纸网站: wallhaven.cc:这是一个高质量的壁纸网,提供了大量的高清壁纸,可以按照不同的标签、分辨率、色彩等进行筛选。 unsplash.com:这是一个免费的高清壁纸网站,提供了大量的高质量照片,可以按照不同的主题进行筛选。 3 pex…

    other 2023年5月9日
    00
  • VScode中配置使用fortran的方法

    下面是详细讲解VScode中配置使用Fortran的方法: 前置条件 在开始配置使用Fortran之前,需要确保以下条件已满足: 已安装Visual Studio Code 已安装Fortran编译器(如GNU Fortran) 步骤一:安装使用Fortran的扩展 在Visual Studio Code中,可以通过安装扩展来支持使用Fortran,具体步骤…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部