Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Javascript 使用默认值时调用静态方法_Javascript_Oop_Ecmascript 6 - Fatal编程技术网

Javascript 使用默认值时调用静态方法

Javascript 使用默认值时调用静态方法,javascript,oop,ecmascript-6,Javascript,Oop,Ecmascript 6,当使用ES6模块和导出默认类时,如何从同一类中的另一个方法调用静态方法?我的问题特别涉及到类何时被标记为默认(不像) 下面的示例说明了在不使用默认值(即Test.staticMethod())时,如何从非静态方法调用静态方法 如果你敢,你可以选择,但更好的解决方案是只命名你的类: export default class MyClass { static staticMethod(){ alert('static'); } nonStaticMethod

当使用ES6模块和导出默认类时,如何从同一类中的另一个方法调用静态方法?我的问题特别涉及到类何时被标记为默认(不像)

下面的示例说明了在不使用默认值(即
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的复制品是的,这看起来确实有效。我不知道在使用默认值时,也可以使用类名。那么,我将对此评论作出回答。