我应该在子类中使用super()调用父类方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该在子类中使用super()调用父类方法相关的知识,希望对你有一定的参考价值。
我在javascript中有关于super()的问题。我应该在子类中使用super()调用父类方法'stringy()'还是这样使用它:
function solve() {
class Melon {
constructor(weight, melonSort) {
if (new.target === Melon) {
throw new Error('Abstract class cannot be instantiated directly.')
}
this.weight = weight;
this.melonSort = melonSort;
this._elementIndex = weight * Number(melonSort.length);
}
stringy() {
return `Element: ${this.element}
Sort: ${this.melonSort}
Element Index: ${this._elementIndex}`
}
}
class Watermelon extends Melon {
constructor(weight, melonSort) {
super(weight, melonSort);
this.element = 'Water';
}
}
或
function solve() {
class Melon {
constructor(weight, melonSort) {
if (new.target === Melon) {
throw new Error('Abstract class cannot be instantiated directly.')
}
this.weight = weight;
this.melonSort = melonSort;
this._elementIndex = weight * Number(melonSort.length);
}
stringy() {
return `Element: ${this.element}
Sort: ${this.melonSort}
Element Index: ${this._elementIndex}`
}
}
class Watermelon extends Melon {
constructor(weight, melonSort) {
super(weight, melonSort);
this.element = 'Water';
}
stringy(){
return super.stringy();
}
}
哪个是正确的,和有什么区别。
答案
除非您要更改行为,否则无需在stringy
中包含Watermelon
。如果您不这样做,Watermelon
实例将继承Melon
版本。
以上是关于我应该在子类中使用super()调用父类方法的主要内容,如果未能解决你的问题,请参考以下文章