class AbstractClass {
constructor() {
}
set property(value) {
this.property_ = value;
}
get property() {
return this.property_;
}
}
class Subclass extends AbstractClass {
constructor() {
super();
}
set property(value) {
super.property = value;
if (!(this.property_ instanceof SubclassAssociatedClass)) throw new TypeError();
}
//get property() {
// return super.property;
//}
}
eines Attributes Überschreiben der set
Verfahren außer Kraft gesetzt werden, und es erscheint die get
Verfahren auch außer Kraft gesetzt werden müssen, da sonst undefined
zurückgegeben (dh die get
Methode nicht vererbt wird, uncomment die Unterklasse get property()
Methode oben und alles funktioniert gut).eine setter überschreiben und der Getter muß auch
Ich nehme an, das ist ein Teil der Spezifikation. Es würde jedoch möglicherweise folgen, wenn das Verhalten eine Konsequenz der Kreuzkompilierung war. Nur um sicher zu sein, ist dies der richtige Weg, überschriebene Setter und Getters zu kodieren (beides gleichzeitig oder gar nicht)?
Können Sie Ihr Beispiel so bearbeiten, dass der Setter/Getter nicht nur super aufruft? – Bergi
Dies könnte hilfreich sein: http://stackoverflow.com/questions/27400010/object-prototype-definegetter-and-definesetter-polyfill/27400162#27400162. Es behandelt das Problem in Bezug auf "__defineGetter__" usw., aber das Prinzip ist dasselbe: Wenn Sie den Setter für eine Eigenschaft definieren/neu definieren, die bereits einen Getter hat, müssen Sie den Getter abrufen und zusammen mit dem Setter zurücksetzen . –