Мне интересно, соответствует ли следующая спецификация 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. Он также не работает с использованием Babel с флагом es2015
. Использует ли super.name = ...
унаследованный сеттер, не являющийся частью спецификации ES6? Или это ошибка в реализации Babel?