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;
//}
}
ridefinire il metodo di un attributo set
e appare il metodo get
deve essere ignorato anche, tuttavia undefined
viene restituito (cioè, il metodo get
non è ereditata, uncomment la sottoclasse get property()
metodo sopra e tutto funziona bene).Override un setter, e il getter deve essere anche sostituita
Presumo che questa sia una parte della specifica., Se possibile seguirebbe se il comportamento fosse una conseguenza della compilazione incrociata. Per sicurezza, è questo il modo corretto per codificare setter e getter sovrascritti (entrambi allo stesso tempo o per niente)?
Puoi modificare il tuo esempio in modo che il setter/getter non stia semplicemente chiamando super? – Bergi
Questo potrebbe essere utile: http://stackoverflow.com/questions/27400010/object-prototype-definegetter-and-definesetter-polyfill/27400162#27400162. Discute il problema in termini di '__defineGetter__' ecc., Ma il principio è lo stesso: se si sta definendo/ridefinendo il setter su una proprietà che ha già un getter, è necessario recuperare il getter e resettarlo insieme al setter . –