Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ecmascript 6 es6是否从父类的静态方法访问子类的静态方法?_Ecmascript 6_Es6 Class - Fatal编程技术网

Ecmascript 6 es6是否从父类的静态方法访问子类的静态方法?

Ecmascript 6 es6是否从父类的静态方法访问子类的静态方法?,ecmascript-6,es6-class,Ecmascript 6,Es6 Class,我想这样做: 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); 但它不起作用。这可能是

我想这样做:

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,因为我希望随机子类能够定义/重写静态方法,但在事先不知道哪个类是子类的情况下从父类调用该方法。

myMethod2
未定义,因为代码错误
this
是静态方法中的类构造函数,
this.constructor
是构造函数的构造函数,即
函数
。应该是:

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

这是反模式,因为
Parent
没有
myMethod2
,并且
Parent.myMethod1()
将导致错误。它要么不包含op
myMethod2
,要么被标记为抽象类,永远不能直接访问。

Hi,这看起来像是一个。您能告诉我们您正在努力实现什么,以便我们可以帮助您改进您的体系结构吗?为了让你的设置生效。@MaartenBicknese你是说这是反模式还是不可能?我是说这是反模式,我很乐意帮助您找到一个好的模式来解决您的问题。@MaartenBicknese我在下面得到了一个答案,但我真的很好奇为什么在从父对象引用的子对象中一般重写静态方法是一种反模式。是否有一篇博文或文章可以参考?