当前位置:首页 > JavaScript

js extends 实现

2026-03-15 08:30:29JavaScript

extends 的基本用法

在 JavaScript 中,extends 关键字用于实现类之间的继承。子类通过 extends 继承父类的属性和方法。

class Parent {
  constructor(name) {
    this.name = name;
  }
  greet() {
    console.log(`Hello, ${this.name}`);
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name); // 调用父类的构造函数
    this.age = age;
  }
  greet() {
    super.greet(); // 调用父类的方法
    console.log(`I am ${this.age} years old`);
  }
}

const child = new Child('Alice', 10);
child.greet();

super 关键字的作用

super 用于在子类中调用父类的构造函数或方法。必须在子类构造函数中使用 super() 后才能使用 this

class Parent {
  constructor(value) {
    this.value = value;
  }
}

class Child extends Parent {
  constructor(value, extra) {
    super(value); // 必须调用
    this.extra = extra;
  }
}

继承内置类型

extends 可以继承 JavaScript 内置类型,如 Array、Error 等。

class CustomArray extends Array {
  isEmpty() {
    return this.length === 0;
  }
}

const arr = new CustomArray(1, 2, 3);
console.log(arr.isEmpty()); // false

静态方法的继承

静态方法也会被继承,可以通过 super 在子类中调用父类的静态方法。

class Parent {
  static staticMethod() {
    return 'Parent static';
  }
}

class Child extends Parent {
  static staticMethod() {
    return super.staticMethod() + ' + Child static';
  }
}

console.log(Child.staticMethod()); // "Parent static + Child static"

检查继承关系

使用 instanceof 可以检查对象的继承关系。

js extends 实现

class Parent {}
class Child extends Parent {}

const child = new Child();
console.log(child instanceof Parent); // true

注意事项

  • 子类必须在 constructor 中调用 super(),除非子类没有显式定义构造函数
  • 箭头函数没有自己的 this,不能用作构造函数,也不能用 extends 继承
  • 可以继承普通的构造函数(非 class),但有一些限制
function ParentFunc(name) {
  this.name = name;
}
ParentFunc.prototype.greet = function() {
  console.log(`Hello, ${this.name}`);
};

class Child extends ParentFunc {
  constructor(name, age) {
    super(name);
    this.age = age;
  }
}

const child = new Child('Bob', 12);
child.greet(); // "Hello, Bob"

标签: jsextends
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…