ecmascript-6

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

Aquí está el es6fiddle