实现JavaScript中继承的三种方式

实现JavaScript中继承的三种方式包括:原型链继承、构造函数继承和组合继承。

1. 原型链继承

原型链继承是通过将子类的原型指向父类实例来实现继承的。代码示例如下:

// 父类
function Person(name) {
  this.name = name;
}

Person.prototype.sayHello = function() {
  console.log(`Hello, I'm ${this.name}`);
};

// 子类
function Student(name, grade) {
  this.grade = grade;
}

// 子类继承父类
Student.prototype = new Person();

// 测试代码
const stu = new Student('Tom', 5);
stu.sayHello(); // Hello, I'm Tom
console.log(stu.grade); // 5

原型链继承的缺点是父类构造函数的属性和方法不能被继承,因为子类的原型对象是父类的实例。而且多个子类实例共享同一个父类实例,可能导致修改一个实例的属性会影响到其他实例。

2. 构造函数继承

构造函数继承是通过在子类构造函数中调用父类构造函数来实现的。代码示例如下:

// 父类
function Person(name) {
  this.name = name;
  this.sayHello = function() {
    console.log(`Hello, I'm ${this.name}`);
  }
}

// 子类
function Student(name, grade) {
  Person.call(this, name);
  this.grade = grade;
}

// 测试代码
const stu = new Student('Tom', 5);
stu.sayHello(); // Hello, I'm Tom
console.log(stu.grade); // 5

构造函数继承的优点是可以继承父类构造函数的属性和方法,每个实例都有自己独立的属性和方法。缺点是不能继承父类原型链上的方法。

3. 组合继承

组合继承是通过将原型链继承和构造函数继承结合起来使用的方式。代码示例如下:

// 父类
function Person(name) {
  this.name = name;
}

Person.prototype.sayHello = function() {
  console.log(`Hello, I'm ${this.name}`);
};

// 子类
function Student(name, grade) {
  Person.call(this, name);
  this.grade = grade;
}

// 子类继承父类原型
Student.prototype = new Person();

// 修正子类原型的constructor属性
Student.prototype.constructor = Student;

// 测试代码
const stu = new Student('Tom', 5);
stu.sayHello(); // Hello, I'm Tom
console.log(stu.grade); // 5

组合继承既能继承父类构造函数的属性和方法,也能继承父类原型链上的方法。但是这种方法会调用两次父类构造函数,一次在子类构造函数中调用,一次在子类原型上指定父类实例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:实现JavaScript中继承的三种方式 - Python技术站

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

相关文章

  • jQuery怎么解析Json字符串(Json格式/Json对象)

    当我们从前端请求数据时,服务端一般都会返回JSON格式的数据。为方便取出其中的关键数据,我们需要将其解析成JSON对象,并通过jQuery对其进行操作。 1. 解析JSON字符串 当我们接收到服务端返回的JSON格式的字符串时,需要使用JSON.parse()方法将其转换为JSON对象。示例如下: var jsonStr = ‘{"name&quo…

    JavaScript 2023年5月27日
    00
  • JS定时器实现数值从0到10来回变化

    实现数值从0到10来回变化,可以通过JavaScript中的定时器来实现。具体步骤如下: 使用JavaScript的setInterval()方法创建一个定时器。该方法接受两个参数:要执行的代码块和时间间隔,单位是毫秒。 创建一个计数器变量,初始值设为0,每当定时器触发时,将计数器加1,并将该数值显示在页面上。 设定一个条件,当计数器的值为10时,将其减1,…

    JavaScript 2023年6月11日
    00
  • js表单验证实例讲解

    下面是一份关于“JS表单验证实例讲解”的攻略,包括两个示例说明。 1. 什么是JS表单验证? JS表单验证是一种验证表单数据输入是否符合规范的技术,它可以帮助开发者避免用户输入错误的数据,提高网站的安全性和易用性。 2. JS表单验证的实现方法 通常,JS表单验证可以通过以下方法实现: 使用HTML5表单元素的验证功能:例如使用<input>元素…

    JavaScript 2023年6月10日
    00
  • JavaScript获取服务器时间的方法详解

    JavaScript获取服务器时间的方法详解 在Web开发中,有时需要获取服务器的时间,在前端使用JavaScript编写代码时,通常会用到一些方法来获取该时间。本文将会介绍获取服务器时间的常用方法,供前端开发者参考和使用。 1. 使用XMLHttpRequest对象获取服务器时间 XMLHttpRequest可以通过异步的方式请求服务器上的一个文本文件,该…

    JavaScript 2023年5月28日
    00
  • 原生js 实现表单验证功能

    下面是关于“原生js实现表单验证功能”的完整攻略: 目录: 需求分析和实现思路 HTML结构布局 JS代码实现 示例说明 需求分析和实现思路 表单验证功能是Web开发中必不可少的功能之一,实现表单验证的方法有很多种,包括使用第三方库(如jQuery、Bootstrap等),也可以使用原生的JS来实现。下面是一个原生JS实现表单验证的基本思路: 获取表单元素。…

    JavaScript 2023年6月10日
    00
  • js获取指定字符前/后的字符串简单实例

    当我们在开发 Javascript 程序时,有时候需要从一个字符串中截取出前面或后面一段字符串,这就需要使用字符串的截取操作了。在 Javascript 中,我们可以使用一些简单的方法来获取指定字符前/后的字符串。 获取指定字符后的字符串 在 Javascript 中,我们可以使用字符串的 substring() 方法来获取指定字符后的字符串。这个方法接受两…

    JavaScript 2023年5月28日
    00
  • JS中检测数据类型的几种方式及优缺点小结

    让我来详细讲解一下 “JS中检测数据类型的几种方式及优缺点小结” 的完整攻略。 什么是数据类型 在JavaScript中,数据类型即表示数据的类型或值的类型。JavaScript中的数据类型包括以下几种: 基本类型(也称为原始类型):undefined、null、布尔值(Boolean)、数值(Number)和字符串(String)。 引用类型:对象(Obj…

    JavaScript 2023年6月10日
    00
  • JavaScript中数组Array方法详解

    JavaScript中数组Array方法详解 在JavaScript中,Array是一个非常重要的数据类型,它提供了很多有用的方法来对数组进行操作。在本文中,我们将会学习到这些方法的具体用法和示例。 创建数组 在JavaScript中,我们可以通过以下方式创建一个数组: // 方式1:使用[]括号 const arr1 = []; // 方式2:使用Arra…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部