📅  最后修改于: 2023-12-03 15:23:46.589000             🧑  作者: Mango
在 JavaScript 中,可以使用类继承来创建对象。当子类继承父类时,子类可以调用父类中的方法。但是,有时候我们需要在子类中调用父类的方法,本文将介绍如何实现这个功能。
在 JavaScript 中,可以使用 super
关键字来在子类中调用父类的方法。
先看一个例子:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
speak() {
super.speak();
console.log(`${this.name} barks.`);
}
}
let d = new Dog('Rufus');
d.speak();
这个例子中,我们定义了一个 Animal
类和一个 Dog
类。Animal
类有一个 speak
方法,用于输出动物发出声音的信息。Dog
类继承了 Animal
类,并且覆盖了 speak
方法。在 Dog
类中,我们使用 super.speak()
来调用 Animal
类中的 speak
方法,并且在此基础上输出狗吠的信息。
运行这个例子,你会看到输出:
Rufus makes a noise.
Rufus barks.
这证明了使用 super
关键字可以在子类中调用父类的方法。
除了使用 super
关键字,我们也可以使用 call
方法来调用父类中的方法。call
方法可以将一个函数的 this
值绑定到某个对象,并调用这个函数。
先看一个使用 call
方法的例子:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
speak() {
Animal.prototype.speak.call(this);
console.log(`${this.name} barks.`);
}
}
let d = new Dog('Rufus');
d.speak();
这个例子中,我们同样定义了 Animal
类和 Dog
类,并且覆盖了 speak
方法。在 Dog
类中,我们使用了 Animal.prototype.speak.call(this)
来调用 Animal
类中的 speak
方法,并绑定了 this
值为当前的对象。这样 speak
方法会输出动物的声音信息。
运行这个例子,你会得到和之前相同的输出:
Rufus makes a noise.
Rufus barks.
这也证明了使用 call
方法同样可以在子类中调用父类的方法。
本文介绍了如何从 JavaScript 中的子类调用父方法。我们可以使用 super
关键字或者 call
方法来实现这个功能。当需要在子类中调用父类的方法时,可以选择使用其中一种方法。