使用ES6语法是否可以扩展一个类并继承其静态方法?如果是这样,我们可以在子类的静态方法中调用super吗?
例:
class Parent { static myMethod(msg) { console.log(msg) } } class Child extends Parent { static myMethod() { super("hello") } } Child.myMethod(); // logs "hello"
这是给我一个没有方法调用未定义的错误在我的transpiler(Reactify).
____ SuperProtoOfParent.open.call(本);
解决方法
根据
spec here和
here超级基地引用当前这个对象的原型.在静态方法中,它将引用继承的类.所以要调用父静态方法,你必须调用super.myMethod(‘some message’).这是一个例子:
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