从父母的静态方法子类的ES6访问静态方法?

问题描述 投票:2回答:1

我想做这个:

class Parent {
    static myMethod1(msg) {
    // myMethod2 is undefined
    this.constructor.myMethod2(msg);
  }
}

class Child extends Parent {
  static myMethod2(msg) {
    console.log('static', msg);
  }
}

Child.myMethod1(1);

但是,这是行不通的。这是可能的一些其他的方式?我不想在父硬编码Child.myMethod2我知道会的工作,因为我想随机子类能够定义/覆盖静态方法,但请从父该方法无需事先知道哪些类是孩子。

ecmascript-6 es6-class
1个回答
4
投票

myMethod2是不确定的,因为代码是错误的。 this是在静态方法类的构造,并且this.constructor是一个构造,即Function的构造函数。它应该是:

class Parent {
  static myMethod1(msg) {
    this.myMethod2(msg);
  }
}

这是反模式,因为Parent没有myMethod2,并Parent.myMethod1()会导致错误。它都应包含无操作myMethod2,或标注为抽象类从不直接访问。

© www.soinside.com 2019 - 2024. All rights reserved.