11
次はES6仕様に準拠している場合、私は思ったんだけど:ES6継承クラスでスーパーセッターを呼び出すことは可能ですか?
class X {
constructor(name) {
this._name = name;
}
get name() {
return this._name;
}
set name(name) {
this._name = name + "X";
}
}
class Y extends X {
constructor(name) {
super(name);
}
set name(name) {
super.name = name;
this._name += "Y";
}
}
アイデアはlet y = new Y(""); y.name = "hi"
がy.name === "hiXY"
が真であることになるはずであるということです。
私が知る限り、これはChromeでES6フラグをオンにしても機能しません。また、es2015
フラグを持つBabelを使用しても機能しません。継承されたセッターのsuper.name = ...
をES6仕様の一部に使用していませんか?あるいは、これはバベルの実装におけるバグですか?
"動作しません"を定義しますか?あなたは、 'get name(){return super.name;}}と一致しないで' set name'を子に定義することによって、ベースクラスから 'get name'をオーバーライドしています。 } '。それは問題ですか? – loganfsmyth
@DenysSéguretいいえ、私はスーパーのセッターが動くようにしたいので(名前の最後にXを付けてください)。 – TAGraves
@loganfsmythそうですよ!私は 'set name'を定義すると' get name'が上書きされることに気づいていませんでした。それは私がゲッターを追加した後に動作するように見えます!ありがとう! – TAGraves