JavaScript 来自匿名函数的字段访问

JavaScript field access from anonymous function

如何从方法内的匿名函数访问字段? 就像这个例子:

class Something {
    constructor (){
        this.gax = “gax”;
    }
    doSomething(){
        (function () {
           console.log(this.gax);
        }());
    }
}
new Something().doSomething();

这将导致 "this" 未定义的错误。 非常感谢您,搜索了几个小时后我在网上找不到答案。 最好, 左

在你的匿名函数中,this绑定到函数;它不再指代 class.

改用 arrow function,它没有自己的 this 绑定。

class Something {
    constructor (){
        this.gax = "gax";
    }
    doSomething(){
        (() => {
           console.log(this.gax);
        })();
    }
}
new Something().doSomething();

或者,您可以使用 .call().apply().bind():

class Something {
    constructor (){
        this.gax = "gax";
    }
    doSomething(){
        (function() {
           console.log(this.gax);
        }).call(this);
    }
}
new Something().doSomething();

class Something {
    constructor (){
        this.gax = "gax";
    }
    doSomething(){
        (function () {
           console.log(this.gax);
        }).apply(this);
    }
}
new Something().doSomething();

您可以使用apply方法。 apply() 方法调用具有给定 this 值的函数