如何实现继承_javascript中类的继承方式有哪些?

2次阅读

javaScript类继承通过extends实现,底层基于原型链;子类需在constructor中调用super()初始化父类this,super可传参并支持方法重写、静态方法及内置类继承。

如何实现继承_javascript中类的继承方式有哪些?

javascript 中类的继承主要通过 extends 关键字 实现,这是 es6 引入的语法糖,底层仍基于原型链。它让子类能复用父类的属性和方法,并支持重写、扩展逻辑。

使用 extends 和 super 实现基础继承

子类通过 extends 声明继承父类,构造函数中必须调用 super()(否则报错),以初始化父类的 this。super() 相当于执行父类 constructor

  • 不调用 super():子类构造函数中无法访问 this,会直接报 ReferenceError
  • super() 必须在使用 this 之前调用
  • super 可以传参,这些参数会传给父类 constructor

示例:

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() { console.log(`${this.name} 发声`); }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name); // 初始化父类 this
    this.breed = breed;
  }
  speak() { console.log(`${this.name} 汪汪!`); }
}

方法重写与 super 调用父类方法

子类可定义同名方法覆盖父类逻辑;若需在子类方法中调用父类版本,用 super.方法名()

立即学习Java免费学习笔记(深入)”;

如何实现继承_javascript中类的继承方式有哪些?

Ghiblio

专业AI吉卜力风格转换平台,将生活照变身吉卜力风格照

如何实现继承_javascript中类的继承方式有哪些? 157

查看详情 如何实现继承_javascript中类的继承方式有哪些?

  • super 不仅可用于 constructor,也可用于普通方法和 getter/setter
  • super 指向父类的原型对象(即 Parent.prototype),不是父类实例
  • 静态方法中 super 指向父类本身(Parent)

例如:speak() { super.speak(); console.log(‘然后摇尾巴’); }

静态方法与继承关系

Static 方法也会被继承。子类可通过 子类名.静态方法 调用父类静态方法,也可用 super.静态方法 在子类静态方法中调用父类版本。

  • class A { static foo() { return ‘A’; } }
    class B extends A {}
    B.foo(); // ‘A’
  • class C extends A { static foo() { return super.foo() + ‘ + C’; } }

继承内置类(如 Array、Error)

extends 可继承原生构造函数,使自定义类拥有内置行为(如 instanceof 正确、数组方法可用)。

  • class MyArray extends Array {}
    const arr = new MyArray(1, 2);
    arr.map(x => x * 2); // ✅ 正常工作
  • 注意:某些内置类(如 promise)在旧环境可能有兼容性限制,但现代引擎普遍支持

基本上就这些。虽然语法简洁,但理解 super 的绑定时机和 this 的初始化顺序很关键——它不是魔法,只是对原型链和 [[Construct]] 的封装

以上就是如何实现继承_

text=ZqhQzanResources