ecmascript 6 - Heredar métodos estáticos en ES6
ecmascript-6 (1)
Usando la sintaxis de ES6, ¿es posible extender una clase y heredar sus métodos estáticos? Y si es así, ¿podemos llamar a super en el método estático de la subclase?
Ejemplo:
class Parent {
static myMethod(msg) {
console.log(msg)
}
}
class Child extends Parent {
static myMethod() {
super("hello")
}
}
Child.myMethod(); // logs "hello"
Esto me está dando una llamada de no método en un error indefinido en mi transpiler (Reactify).
____SuperProtoOfParent.open.call(this);
De acuerdo con la especificación aquí y here super
referencias de super
base al prototipo del objeto actual. En métodos estáticos hará referencia a la clase heredada. Por lo tanto, para invocar el método estático padre, debe llamar a super.myMethod(''some message'')
. Aquí hay un ejemplo:
class Parent {
static myMethod(msg) {
console.log(''static'', msg);
}
myMethod(msg) {
console.log(''instance'', msg);
}
}
class Child extends Parent {
static myMethod(msg) {
super.myMethod(msg);
}
myMethod(msg) {
super.myMethod(msg);
}
}
Child.myMethod(1); // static 1
var child = new Child();
child.myMethod(2); // instance 2