使用ES6模块和export default class
时如何从同一个类中的另一个方法调用静态方法?我的问题特别指的是何时将类标记为默认值(与es6 call static methods不同)
以下示例说明了如何在不使用默认值时从非静态方法调用静态方法,即Test.staticMethod()
?
export default class {
static staticMethod(){
alert('static');
}
nonStaticMethod(){
// will not work because staticMethod is static.
// Ordinarily you would use MyClass.staticMethod()
this.staticMethod();
}
}
答案 0 :(得分:4)
如果你敢,你can use this.constructor.…
,但更好的解决办法就是给你的班级命名:
export default class MyClass {
static staticMethod(){
alert('static');
}
nonStaticMethod() {
// Ordinarily you just use
MyClass.staticMethod();
}
}
如果由于某种原因 1 而无法做到这一点,那么还有这个黑客:
import MyClass from '.' // self-reference
export default class {
static staticMethod(){
alert('static');
}
nonStaticMethod() {
// Ordinarily you just use
MyClass.staticMethod();
}
}
1:我无法想象一个好的
答案 1 :(得分:2)
您可以为导出的类命名并通过辅助名称引用它:
export default class _ {
static staticMethod(){
alert('static');
}
nonStaticMethod(){
_.staticMethod();
}
}