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 に答える