JS高级ES6的6种继承方式

yizhihongxing

下面是JS高级ES6的6种继承方式的详细攻略。

1. 经典继承(原型链继承)

原理:

子类的原型为父类的一个实例,通过设置子类的原型链,使子类可以访问父类的属性和方法,也就实现了继承。

示例:

// 父类
function Animal(name) {
  this.name = name;
  this.sayName = function() {
    console.log(this.name);
  }
}

// 子类
function Dog(name) {
  this.bark = function() {
    console.log('Woof!');
  }
  Animal.call(this, name);
}

Dog.prototype = new Animal();

// 实例化子类
const puppy = new Dog('Puppy');

puppy.sayName(); // 输出:Puppy
puppy.bark(); // 输出:Woof!

2. 构造函数继承

原理:

通过在子类构造函数中调用父类构造函数,以达到继承父类属性和方法的目的。

示例:

// 父类
function Animal(name) {
  this.name = name;
  this.sayName = function() {
    console.log(this.name);
  }
}

// 子类
function Dog(name) {
  Animal.call(this, name);
  this.bark = function() {
    console.log('Woof!');
  }
}

// 实例化子类
const puppy = new Dog('Puppy');

puppy.sayName(); // 输出:Puppy
puppy.bark(); // 输出:Woof!

3. 组合继承(原型链继承和构造函数继承结合)

原理:

先使用原型链继承父类的属性和方法,再通过构造函数继承父类的属性和方法,从而既继承了父类的属性和方法,又避免了子类实例修改父类属性或方法造成的影响。

示例:

// 父类
function Animal(name) {
  this.name = name;
  this.sayName = function() {
    console.log(this.name);
  }
}

// 子类
function Dog(name) {
  Animal.call(this, name);
  this.bark = function() {
    console.log('Woof!');
  }
}

Dog.prototype = new Animal();

// 实例化子类
const puppy = new Dog('Puppy');

puppy.sayName(); // 输出:Puppy
puppy.bark(); // 输出:Woof!

4. 原型式继承

原理:

以一个对象为原型创建一个子对象,通过使用Object.create实现原型式继承。

示例:

// 父对象
const Animal = {
  name: '',
  sayName() {
    console.log(this.name);
  }
}

// 子对象
const Dog = Object.create(Animal);
Dog.bark = function() {
  console.log('Woof!');
}

// 实例化子对象
const puppy = Object.create(Dog);
puppy.name = 'Puppy';

puppy.sayName(); // 输出:Puppy
puppy.bark(); // 输出:Woof!

5. 寄生式继承

原理:

与原型式继承类似,不同在于寄生式继承在创建的新对象上增加新的方法,而不是在原型上增加。

示例:

// 父对象
const Animal = {
  name: '',
  sayName() {
    console.log(this.name);
  }
}

// 子对象
function Dog(name) {
  const dog = Object.create(Animal);
  dog.bark = function() {
    console.log('Woof!');
  }
  dog.name = name;
  return dog;
}

// 实例化子对象
const puppy = Dog('Puppy');

puppy.sayName(); // 输出:Puppy
puppy.bark(); // 输出:Woof!

6. 寄生组合式继承(ES6改进版组合继承)

原理:

以函数封装组合继承,通过ES6中的class和extends语法糖实现,从而避免了构造函数多次调用父类的问题。

示例:

// 父类
class Animal {
  constructor(name) {
    this.name = name;
  }

  sayName() {
    console.log(this.name);
  }
}

// 子类
class Dog extends Animal {
  constructor(name) {
    super(name);
  }

  bark() {
    console.log('Woof!');
  }
}

// 实例化子类
const puppy = new Dog('Puppy');

puppy.sayName(); // 输出:Puppy
puppy.bark(); // 输出:Woof!

以上就是JS高级ES6的6种继承方式的完整攻略,希望能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS高级ES6的6种继承方式 - Python技术站

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

相关文章

  • PHP 作用域解析运算符(::)

    PHP 作用域解析运算符(::)的完整攻略 PHP 作用域解析运算符(::)用于访问类的静态成员、常量和静态方法。它允许在不创建类的实例的情况下,直接访问类的成员。 访问静态成员 使用作用域解析运算符(::)可以直接访问类的静态成员变量和静态方法。下面是一个示例: class MyClass { public static $myStaticVar = \&…

    other 2023年8月19日
    00
  • PostgreSQL 如何修改文本类型字段的存储方式

    要修改 PostgreSQL 数据库中的文本类型字段的存储方式,需要运行 ALTER TABLE 命令并指定要修改的列名和新的存储类型。 具体步骤如下: 首先,使用 psql 或其他 PostgreSQL 客户端连接到要修改的数据库。 然后,确定要修改的表和列名。例如,我们要将表 mytable 中的列 mycolumn 的存储类型修改为 TEXT: ALT…

    other 2023年6月25日
    00
  • 苹果发布OS X El Capitan测试版 OS X 10.11.1 beta1开发者中心下载

    苹果发布OS X El Capitan测试版的完整攻略 1. 登录开发者中心 首先,需要进入苹果公司的开发者中心,在官网右上角的“开发者中心”中进行登录。如果您没有开发者账号,需要进行注册并支付年度会费。 2. 下载OS X 10.11.1 beta1 在登录开发者中心后,进入“Downloads”页面,找到“OS X El Capitan”的测试版并点击下…

    other 2023年6月26日
    00
  • 【js新手教程】js获取当前星期几的几种方法

    【js新手教程】js获取当前星期几的几种方法 在JavaScript中,获取当前星期几是一项常见的任务。本教程将介绍几种获取当前星期几方法。 方法一:使用Date对象 JavaScript中的Date对象提供了获取当前日期和时间的方法。其中,getDay()方法可以返回当前星期,返回值为0-6,分别代表星期日到星期六。 以下是使用Date对象获取当前星期几的…

    other 2023年5月7日
    00
  • 基于Ionic3实现选项卡切换并重新加载echarts

    基于Ionic3实现选项卡切换并重新加载echarts的完整攻略 1. 简介 在Ionic3中实现选项卡切换并重新加载echarts可以通过以下步骤完成。首先,我们需要创建一个基本的Ionic3应用程序,并添加选项卡组件。然后,我们将使用echarts库来绘制图表,并在选项卡切换时重新加载图表数据。 2. 创建Ionic3应用程序 首先,确保你已经安装了No…

    other 2023年7月29日
    00
  • dota2重生Bate测试第二篇章新引擎自定义游戏相关介绍

    Dota2重生Bate测试第二篇章新引擎自定义游戏相关介绍 简介 本文是针对Dota2重生Bate测试第二篇章新引擎自定义游戏相关介绍的完整攻略。在本文中,我们将会介绍Dota2重生Bate测试第二篇章新引擎自定义游戏相关的基本概念、操作方法、以及相关的示例说明等内容,以帮助游戏爱好者更好地理解和运用这一游戏资源。 基本概念 在介绍Dota2重生Bate测试…

    other 2023年6月25日
    00
  • 高性能MySQL(第三版)

    《高性能MySQL(第三版)》是一本介绍MySQL数据库性能优化的经典著作。本文将为您提供一份完整攻略,包括MySQL性能优化的基本原则、常见性能问题的解决方法、优化工具的使用等。同时,本文还提供了两个示例说明。 MySQL性能优化的基本原则 MySQL性能优化的基本原则是:尽量减少磁盘I/O、减少锁竞争、减少网络通信、减少CPU消耗。具体来说,可以从以下几…

    other 2023年5月5日
    00
  • MySql Group By对多个字段进行分组的实现方法

    首先,需要明确MySQL的Group By操作是应用于数据表中的某些字段,将这些字段中具有相同值的记录分为一组,然后对每组进行统计计算或其他操作,如聚合函数操作(求和、平均数等)。 要对多个字段进行分组,只需要在Group By语句中指定多个字段即可。例如,假设有一张包含用户订单信息的数据表order,包含以下字段:order_id、user_id、orde…

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