javascriptオブジェクトに遅延メソッドを実行させようとしていますが、.done()の場合は、同じオブジェクトの関数を呼び出します。「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を実行するときに「これ」を知っていると非常に便利です。
簡単そうに見えますが、おそらく簡単な答えがあります。.apply()を調べていましたが、それが役に立ったかどうかはわかりません。スタックオーバーフローに関するこの投稿は少し役に立ちましたが、.done()関数に入れた瞬間に壊れました。