Javascript 使用默认值时调用静态方法
当使用ES6模块和导出默认类时,如何从同一类中的另一个方法调用静态方法?我的问题特别涉及到类何时被标记为默认(不像) 下面的示例说明了在不使用默认值(即Javascript 使用默认值时调用静态方法,javascript,oop,ecmascript-6,Javascript,Oop,Ecmascript 6,当使用ES6模块和导出默认类时,如何从同一类中的另一个方法调用静态方法?我的问题特别涉及到类何时被标记为默认(不像) 下面的示例说明了在不使用默认值(即Test.staticMethod())时,如何从非静态方法调用静态方法 如果你敢,你可以选择,但更好的解决方案是只命名你的类: export default class MyClass { static staticMethod(){ alert('static'); } nonStaticMethod
Test.staticMethod()
)时,如何从非静态方法调用静态方法
如果你敢,你可以选择,但更好的解决方案是只命名你的类:
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:如果你敢的话,我想不出一个好的你,但更好的解决办法是只命名你的班级:
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:我无法想象一个好的您可以命名导出的类,并用辅助名称引用它:
export default class _ {
static staticMethod(){
alert('static');
}
nonStaticMethod(){
_.staticMethod();
}
}
您可以命名导出的类并通过辅助名称引用它:
export default class _ {
static staticMethod(){
alert('static');
}
nonStaticMethod(){
_.staticMethod();
}
}
据我所知,静态方法使您能够在不实例化“新类”的情况下调用该方法。另一方面,您需要键入“newclass”,以便能够调用nonStaticMethod()。是否可以将实用程序类与非staticMethod类分开,然后在非staticMethod内调用Utils.staticMethod()?是否有原因不能在导出默认类后引入辅助名称(如导出默认类Foo),并使用名称引用静态方法?(
Foo.staticMethod
)?这对你有用吗?可能是@WiktorZychla的复制品是的,这看起来确实有效。我不知道在使用默认值时,您也可以使用类名。那么,我将对此注释作出回答。据我所知,静态方法使您能够调用该方法,而无需实例化“新类”。另一方面,您需要键入“newclass”,以便能够调用nonStaticMethod()。是否可以将实用程序类与非staticMethod类分开,然后在非staticMethod内调用Utils.staticMethod()?是否有原因不能在导出默认类后引入辅助名称(如导出默认类Foo),并使用名称引用静态方法?(Foo.staticMethod
)?这对你有用吗?可能是@WiktorZychla的复制品是的,这看起来确实有效。我不知道在使用默认值时,也可以使用类名。那么,我将对此评论作出回答。