JavaScript 中 class 语法怎么调用父类构造
在 javascript 的 class 语法中,子类构造函数必须通过 super() 方法显式调用父类的构造函数。这一操作必须在子类使用 this 引用之前执行,否则会导致引用错误。调用 super() 会初始化父类定义的属性并返回一个实例对象,从而确保子类继承完整的父类状态。

super() 在子类中的执行顺序与限制
子类构造函数在执行时,super() 的调用是强制性的且必须位于第一行。如果在访问 this 之后才调用 super(),引擎会抛出 ReferenceError。此外,如果父类构造函数需要参数,这些参数必须作为实参传递给 super(),以确保父类逻辑能正确接收数据并完成初始化。

class Animal {
constructor(name) {
this.name = name;
console.log('Animal created:', this.name);
}
}
class Dog extends Animal {
constructor(name, breed) {
// super() 必须在 this 之前调用
super(name);
this.breed = breed;
console.log('Dog created:', this.breed);
}
}
const myDog = new Dog('Buddy', 'Golden Retriever');
未调用 super() 时的具体报错行为
当开发者忘记在子类构造函数中调用 super() 时,JavaScript 引擎会在尝试访问 this 时立即中断程序。这种设计是为了防止子类在未初始化的状态下操作内存。即使子类构造函数体为空,只要存在 extends 关系,就必须包含 super() 调用,否则无法生成有效的实例对象。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











