-2

JavaScript で User クラスを作成しました。これにメソッド(関数)を書いたのですが、return文ができません。これが私のクラスです:

function User() {
    var isLogedIn = "FukkaMukka";
    var mail = "";
    var name = "";

    //functions

    this.isLogedInFn = function(callback) {
        $.post("controller.php?module=login&action=test", function(e) {
            this.isLogedIn = false; // Here i can't reach the object variable.. why?
            return e;
        })
    }
    this.logIn = logIn;

}
4

2 に答える 2

1

コールバックは、オブジェクトのコンテキストでは実行されません。回避するにはいくつかの方法があります。

  • パラメータでjQuery.ajaxを呼び出しますcontext
  • bind()関数をオブジェクトに
  • オブジェクトへの参照を変数使用に保存します(Sarfrazが提案したように)
于 2012-04-19T17:59:39.230 に答える
0
function User() {
    var isLogedIn = "FukkaMukka";
    var mail = "";
    var name = "";
    var self = this;
    //functions

    this.isLogedInFn = function(callback) {
        $.post("controller.php?module=login&action=test", function(e) {
            // `this` is no longer in the scope of the function as you would think it would be. in this case `this` iirc will reference the window object.
            self.isLogedIn = false; 
            return e;
        })
    }
    this.logIn = logIn;

}

コード内のコメントを参照してください。

于 2012-04-19T17:59:40.427 に答える