javascript类继承需用extends声明子类并在constructor中首行调用super()初始化this;子类自动继承父类实例属性(super后赋值)、原型方法(含get/set)及静态方法;可重写方法并用super.调用父版。

JavaScript 中用 class 语法实现类继承,核心是使用 extends 关键字声明子类,并在子类构造函数中通过 super() 调用父类构造函数。
基础继承写法
子类必须用 extends 显式继承父类;若子类定义了 constructor,则必须第一行调用 super(),否则报错。
- 不调用 super() → 报错:ReferenceError: Must call super constructor in derived class before accessing 'this'
-
super()必须在访问this之前调用 -
super()会执行父类的constructor,并初始化this
继承属性和方法
子类自动继承父类的实例属性(需在 super() 后设置)、原型方法(包括 get/set)和静态方法(需显式用 static 声明并继承)。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 实例属性通常在
super()后赋值:this.name = name - 重写父类方法时,可用
super.方法名()调用父类版本 - 静态方法不会被实例继承,但子类可直接继承父类的
static方法
完整示例
以下是一个带构造参数、方法重写和 super 调用的典型例子:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // ← 必须先调用
this.breed = breed;
}
speak() {
super.speak(); // ← 调用父类方法
console.log(`${this.name} barks!`);
}
}
const dog = new Dog('Buddy', 'Golden Retriever');
dog.speak();
// 输出:
// Buddy makes a sound.
// Buddy barks!
注意事项
class 继承本质仍是基于原型链,extends 会自动设置子类的 [[Prototype]] 指向父类,同时确保 instanceof 正确工作。
- 不能用
extends null创建无原型对象(会报错) - 父类可以是普通函数、内置类(如
Array、Error),甚至另一个class - 箭头函数不能作为类或构造函数,也不能用于
extends右侧
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










