推荐答案
在 JavaScript 中,super 关键字用于调用父类的构造函数或方法。它主要有以下两种用途:
- 在子类的构造函数中调用父类的构造函数:
super()必须在子类构造函数中使用,且必须在this关键字之前调用。 - 在子类的方法中调用父类的方法:
super.methodName()可以在子类的方法中调用父类的同名方法。
本题详细解读
1. 在子类构造函数中调用父类构造函数
当你在子类中定义构造函数时,必须首先调用 super(),以便初始化父类的属性和方法。这是因为子类继承了父类的属性和方法,如果不调用 super(),子类将无法正确继承父类的属性。
// www.javascriptcn.com code example
class Parent {
constructor(name) {
this.name = name;
}
}
class Child extends Parent {
constructor(name, age) {
super(name); // 调用父类的构造函数
this.age = age;
}
}
const child = new Child('Alice', 10);
console.log(child.name); // 输出: Alice
console.log(child.age); // 输出: 102. 在子类方法中调用父类方法
super 也可以用于在子类的方法中调用父类的同名方法。这在子类需要扩展或修改父类方法的行为时非常有用。
// www.javascriptcn.com code example
class Parent {
greet() {
console.log('Hello from Parent');
}
}
class Child extends Parent {
greet() {
super.greet(); // 调用父类的 greet 方法
console.log('Hello from Child');
}
}
const child = new Child();
child.greet();
// 输出:
// Hello from Parent
// Hello from Child注意事项
super()必须在子类构造函数中使用,且必须在this关键字之前调用。- 如果父类没有定义构造函数,子类仍然需要调用
super(),因为 JavaScript 会隐式地为父类生成一个默认的构造函数。 super关键字只能在类的方法中使用,不能在普通函数中使用。
通过理解 super 的作用,你可以更好地掌握 JavaScript 中的继承机制,并编写出更加灵活和可维护的代码。