javascript class ecmascript-6 getter-setter traceur

javascript - Anular un setter, y el getter también debe ser anulado



class ecmascript-6 (1)

Sí, esto es intencional (una parte de la especificación). Si un objeto tiene una propiedad propia (propiedad en su ejemplo), esta propiedad se utilizará y no una heredada. Si esa propiedad existe, pero es una propiedad de acceso sin un captador, se devolverá undefined .

Tenga en cuenta que este comportamiento no ha cambiado desde ES5.

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; //} }

Reemplace el método set de un atributo y parece que el método get debe ser anulado también; de lo contrario, se devuelve undefined (es decir, el método get no se hereda, descomente el método subclase get property() arriba y todo funciona bien).

Supongo que esto es parte de la especificación. Sin embargo, seguiría posiblemente si el comportamiento fuera una consecuencia de la compilación cruzada. Solo para estar seguros, ¿es esta la forma correcta de codificar a los setters y getters anulados (ambos al mismo tiempo o no)?