0

我很好奇这怎么写得更好:

function Klass(variable) {
    this.variable = variable;

    this.callAjax = function() {
        $.get('/url', { }, function(json) {
            console.log(variable); //! <-- shows undefined
        }, "json");
    }
}

所以我创建了一个局部变量:_variable

function Klass(variable) {
    this.variable = variable;

    this.callAjax = function() {
        var _variable = this.variable;
        $.get('/url', { }, function(json) {
            console.log(_variable); //! <-- its ok
        }, "json");
    }
}

它很好,但我真的没有这个解决方案,

你们中有人有更好的代码吗?

4

1 回答 1

4

就是这样。

function(json){console.log(_variable);} 

与“_variable”形成一个闭包。"_variable" 永远保持原始值。

如果您的“变量”应该稍后更新,并且您想要更新的“变量”您定义

var self = this; 

并调用 self.variable 来获取它。

通过这种方式,您将在每次执行回调时获得更新的“变量”。

完整代码:

function Klass(variable) {
    var self = this;
    this.variable = variable;
    this.callAjax = function() {
        $.get('/url', { }, function(json) {
            console.log(self.variable);
        }, "json");
    }
}
于 2013-02-28T07:46:02.370 回答