如何从回调中访问此类成员?

Nat*_*man 4 javascript class class-members

最好用一些代码解释这个问题,所以这里是:

// a class
function a_class {
    this.a_var      = null;
    this.a_function = a_class_a_function;
}

// a_class::a_function
function a_class_a_function() {
    AFunctionThatTakesACallback(function() {
        // How to access this.a_var?
    });
}

// An instance
var instance = new a_class();
instance.a_function();
Run Code Online (Sandbox Code Playgroud)

从回调中AFunctionThatTakesACallback(),如何访问this.a_var

Jac*_*kin 7

您需要this通过创建引用它的局部变量来扩展范围,如下所示:

function a_class_a_function() {
   var self = this;
   AFunctionThatTakesACallback(function() {
      console.log(self.a_var); 
   });
}
Run Code Online (Sandbox Code Playgroud)

你需要这样做的原因是因为函数中的this引用与当前对象不同,它可能会引用全局对象.(通常不是你想要的).AFunctionThatTakesACallbackthiswindow

哦,我提到这被称为封闭吗?