带有ECMAScript6的JSHint:方法未定义

van*_*ooh 0 javascript jshint ecmascript-6

我正在使用ECMAScript6实现客户端应用程序,并使用JSHint进行静态代码分析.我经常在我的代码中使用以下模式:

class MyClass {

    constructor() {
        //This is how I would like to call myMethod
        myMethod();

        //This is how I should call myMethod to make JSHint analysis pass
        this.myMethod();
    }

    myMethod(){
        //Implementation
    }
}
Run Code Online (Sandbox Code Playgroud)

我的主要语言是Java,所以我希望简单地调用myMethod()应该没问题.但是,如果没有将此添加到方法调用中,我将"未定义"'myMethod'来自JSHint的警告.我的问题是:

  1. 在这种情况下,没有这个电话是否正确?(例如在PHP中,你总是需要将$ this->添加到非静态方法调用中)
  2. 如果在没有这个的情况下进行调用是正确的,那么在JSHint中是否有任何方法(任何.jshintrc标志)关闭此警告?

Ber*_*rgi 5

不,这在JavaScript中从来都不正确.总是需要在接收器上显式调用方法来进行this工作,并且需要使用属性访问表示法引用它们,因为方法只是 javascript中属性的函数.它们不能作为其他方法范围内的函数.对于属性来说,它是一样的,顺便说一句.

JsHint就在这里,没有理由拒绝这个警告.即使这可能,尽管如此,执行你的程序只会使它不起作用.