1

失敗した jQuery メソッドからオブジェクト自身の関数にアクセスしたい。

function obj(){    
    this.send = function(){
        $.get("send.php",null,function(data){
            this.success();
        }).error(function(){ this.fail(); });
    }
    this.fail = function(){
        alert("fail");
    }
}

var o = new obj();
o.send();

このエラーが発生します:TypeError: this.fail is not a function

failjQuery内の関数にアクセスするには?

4

1 に答える 1

2

5 行目では、failは同じオブジェクトによって呼び出されてthisいないため、同じ参照を持たないため、メソッドが失敗することはありません。コンテキストを変更すると言います。

selfトリックは、またはthatまたはと呼ばれることが多い変数を使用すること_thisです。私は好きselfです。

function obj(){    
    var self = this;
    this.send = function(){
        $.get("send.php",null,function(data){
            this.success();
        }).error(function(){ self.fail(); });
    }
    this.fail = function(){
        alert("fail");
    }
}

それはそれを作るはずです、そしてそうです、javascriptは残念な言語のように見えます. しかし、いくつかの問題を克服すると、その可能性を気に入るはずです。

于 2012-10-20T23:19:25.860 に答える