当前位置:首页 > JavaScript

extends实现js

2026-03-02 04:13:21JavaScript

在 JavaScript 中实现继承的 extends 关键字

JavaScript 中的 extends 关键字用于实现类之间的继承。它允许子类继承父类的属性和方法,同时可以扩展或重写父类的功能。

extends实现js

基本语法

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

  greet() {
    console.log(`Hello, ${this.name}`);
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name); // 调用父类的 constructor
    this.age = age;
  }

  greet() {
    super.greet(); // 调用父类的 greet 方法
    console.log(`I am ${this.age} years old`);
  }
}

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

关键点

super 关键字用于调用父类的构造函数或方法。在子类的 constructor 中,super 必须在 this 之前调用。

extends实现js

继承内置类型

extends 也可以用于继承 JavaScript 内置类型,如 ArrayError 等:

class CustomArray extends Array {
  getFirst() {
    return this[0];
  }

  getLast() {
    return this[this.length - 1];
  }
}

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

静态方法的继承

静态方法也会被继承:

class Parent {
  static staticMethod() {
    console.log('Parent static method');
  }
}

class Child extends Parent {}

Child.staticMethod(); // "Parent static method"

使用注意事项

  • 如果子类没有定义 constructor,JavaScript 会自动生成一个并调用 super()
  • 不能继承普通的构造函数(非 class 定义的),需要使用 Object.setPrototypeOf 等方式
  • 可以通过 instanceof 检查继承关系:child instanceof Parent 会返回 true

标签: extendsjs
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现dh

js实现dh

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