实现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日

相关文章

  • javascript实现的柱状统计图表

    下面是关于“JavaScript实现的柱状统计图表”的完整攻略: 准备工作 在创建柱状统计图表前,需要引入jQuery(可选)和柱状图表所需数据以及样式文件。其中,jQuery主要用于操作DOM元素。 在引入样式文件时,可以根据自己的需求自行编写,也可以使用现成的CSS库,如Bootstrap。 HTML代码 考虑到柱状统计图表一般会显示在页面的某个容器内,…

    JavaScript 2023年6月10日
    00
  • JavaScript中的迭代器和生成器详解

    JavaScript中的迭代器和生成器详解 什么是迭代器? 在 JavaScript 中,迭代器是一种设计模式,用于处理不同类型的数据集合并允许你遍历这些数据集合。迭代器可以存储在变量中,并且可以使用next()方法获取下一个元素,一般会返回一个对象包含两个属性,value和done,分别表示迭代器的当前值和是否已经迭代完成。 迭代器可以使用for…of…

    JavaScript 2023年5月28日
    00
  • JS数组去掉重复数据只保留一条的实现代码

    下面是“JS数组去掉重复数据只保留一条”的实现攻略: 基本思路 可以通过遍历数组,使用对象的属性进行判断,来去掉重复数据。 实现代码 function removeDuplicates(arr){ var obj = {}, newArr = []; for(var i = 0; i < arr.length; i++){ if(!obj[arr[i]…

    JavaScript 2023年6月11日
    00
  • 如何使用IOS自动化测试工具UIAutomation

    如何使用IOS自动化测试工具UIAutomation攻略 简介 UIAutomation是苹果官方提供的测试工具,可以进行IOS应用的自动化测试。它可以在模拟器或真机上运行,可以创建脚本来模拟用户在应用程序上的操作,然后对这些操作的结果进行验证。 UIAutomation依赖于Javascript语言,并且提供了一些函数来访问IOS应用的UI元素,例如滚动、…

    JavaScript 2023年5月28日
    00
  • Javascript中内建函数reduce的应用详解

    Javascript中内建函数reduce的应用详解 简介 reduce是JavaScript中的一个内建函数,主要用于对数组中的元素进行累加计算。在使用reduce之前,需要先理解一些概念。 reduce()方法:reduce() 方法接收两个参数: 一个回调函数,也称为累加器函数(accumulator)。它将原数组中的每个元素和累加器参数进行运算,并返…

    JavaScript 2023年5月27日
    00
  • js弹出框、对话框、提示框、弹窗实现方法总结(推荐)

    JS弹出框、对话框、提示框、弹窗实现方法总结 本篇文章将讲解JS弹出框、对话框、提示框、弹窗的实现方法,并提供两个示例以便更好地理解。 弹出框的实现 使用alert()函数 alert()函数是JS提供的一种简单的弹窗实现方式,当需要在浏览器中弹出一些简单的信息提示时可以方便地使用该函数。 alert(‘Hello world!’); 使用confirm()…

    JavaScript 2023年6月11日
    00
  • 彪哥1.1(智能表格)提供下载

    彪哥1.1(智能表格)提供下载攻略 为了方便用户使用本站提供的智能表格工具“彪哥1.1”,作者特别提供了下载服务。下面是使用该工具的攻略。 1. 下载地址 下载地址为 https://example.com/biaoge.zip。 2. 下载过程 使用浏览器下载 在浏览器输入下载地址,如上文提供的https://example.com/biaoge.zip,…

    JavaScript 2023年6月10日
    00
  • js的window.showModalDialog及window.open用法实例分析

    JS的window.showModalDialog及window.open用法实例分析 在网页开发中,我们经常需要弹出新的窗口来进行交互或展示信息。其中,window.showModalDialog() 和 window.open() 方法可以用来实现窗口的打开功能。这篇文章将分析这两个方法的使用方法以及给出相应的实例。 window.showModalDi…

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