构建调用多态静态方法的实例方法很容易:
Fill
但是,我想做相反的事情-定义一个调用多态实例方法的静态方法-发送VisualBrush
作为参数。
class MyClass {
instanceMethod() {
this.constructor.staticMethod();
}
static staticMethod() {
console.log('first');
}
}
class OtherClass extends MyClass {
static staticMethod() {
console.log('second');
}
}
const i = new OtherClass();
i.instanceMethod();
答案 0 :(得分:1)
如果我了解您在追求……
当您致电OtherClass.staticMethod()
时,this
将是OtherClass
。因此,如果要访问实例方法,则可以在this.prototype
上找到它。
class MyClass {
instanceMethod() {
console.log('first');
this.constructor.staticMethod();
}
static staticMethod(self) {
this.prototype.instanceMethod()
return this.prototype.testVal
}
}
class OtherClass extends MyClass {
instanceMethod() {
console.log('second');
}
get testVal(){
console.log("getting")
return "test value"
}
}
// logs 'second':
console.log(OtherClass.staticMethod({}));
在MyClass
instanceMethod
中要小心,因为如果调用MyClass.staticMethod()
答案 1 :(得分:-1)
Instance
仅仅是方法调用的context
。
你快到了。将self
传递给staticMethod。
然后您可以通过类名来调用它。
MyClass.instanceMethod.call(self)