es6 从 parent 的静态方法访问 child class 的静态方法?
es6 access static method of child class from static method of parent?
我想这样做:
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);
但是没用。这可能是其他方式吗?我不想在 Parent 中对 Child.myMethod2 进行硬编码,我知道这会起作用,因为我希望随机 child classes 能够 define/override静态方法,但从 parent 调用该方法,而事先不知道哪个 class 是 child.
myMethod2
未定义,因为代码错误。 this
是静态方法中的class构造函数,this.constructor
是构造函数的构造函数,即Function
。应该是:
class Parent {
static myMethod1(msg) {
this.myMethod2(msg);
}
}
这是反模式,因为Parent
没有myMethod2
,Parent.myMethod1()
会导致错误。它应该包含无操作 myMethod2
,或者被标记为抽象 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);
但是没用。这可能是其他方式吗?我不想在 Parent 中对 Child.myMethod2 进行硬编码,我知道这会起作用,因为我希望随机 child classes 能够 define/override静态方法,但从 parent 调用该方法,而事先不知道哪个 class 是 child.
myMethod2
未定义,因为代码错误。 this
是静态方法中的class构造函数,this.constructor
是构造函数的构造函数,即Function
。应该是:
class Parent {
static myMethod1(msg) {
this.myMethod2(msg);
}
}
这是反模式,因为Parent
没有myMethod2
,Parent.myMethod1()
会导致错误。它应该包含无操作 myMethod2
,或者被标记为抽象 class 永远不会被直接访问。