私は、javascriptオブジェクトに遅延メソッドを実行させようとしています。また、同じオブジェクト内の.done()関数を呼び出そうとしています。私は問題を抱えています。なぜなら、「this」はそれを呼び出すオブジェクトではなく、遅延オブジェクトになるからです。JQuery遅延の変更 "this"
PageObject.prototype.successFunction = function() {
console.log(arguments);
return console.log(this.name + " Success function called");
};
PageObject.prototype.loadPage = function(url) {
return $.when($.mobile.loadPage("pages/" + url))
.done(this.successFunction);
};
var pg = new PageObject();
pg.loadPage("test.html");
「this」をsuccessFunctionに送信するにはどうすればよいですか?このPageObjectは他の人も同様に拡張される予定ですので、successFunctionを実行するときに「this」を知っておくと非常に便利です。
シンプルなように、おそらく簡単な答えがあります。私は.apply()を探していたが、それが助けになったのか分からなかった。スタックオーバーフローのこのポストは少し役に立ちましたが、それを.done()関数に入れた分は壊れました。
Functions as parameters (with parameters) -- JavaScript
FWIW、遅延オブジェクトはこれを変更していない、それは関数の仕組みです。この値は、関数がどのように/どこで定義されているか、どのように呼び出されているかによって決まりません。 –