ecmascript-6 – 在ES6中继承静态方法

前端之家收集整理的这篇文章主要介绍了ecmascript-6 – 在ES6中继承静态方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用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 herehere超级基地引用当前这个对象的原型.在静态方法中,它将引用继承的类.所以要调用父静态方法,你必须调用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

Here is the es6fiddle

猜你在找的JavaScript相关文章