私は次があるとします。ES6クラス:スーパー方法でサブクラスの適切な名前を取得します
class ThingWithWheels {
constructor(numWheels) {
this.numWheels = numWheels
}
toString() {
return this.constructor.name;
}
}
class Car extends ThingWithWheels {
constructor(color) {
super(4);
this.color = color;
}
toString() {
return `${this.color} ${super.toString()}`;
}
}
これはかなり標準オブジェクト指向プログラミングです。しかし、NodeJS v5.6.0では赤い車を作り、toString()
と呼ぶと、ではなく、Red Car
となります。スーパーメソッドを呼び出すと、としてthis
が扱われ、Car
ではありません。
- これはなぜですか?
- スーパーメソッドが名前を正しく取得する方法はありますか?
これらのうちどれを他のものから継承していますか?あなたはいかなる継承も表示しません。 – jfriend00
あなたはクラスカーがThingWithWheelsを拡張していることを意味しています。ここで読んでください。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes – JordanHendrix
「extend 「ThingWithWheels」動作を変更しません。 –