我試圖讓一個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");
如何發送 「這個」 入successFunction?這個PageObject也將被其他人擴展,所以在運行successFunction時瞭解「this」將非常方便。
看起來很簡單,可能有一個簡單的答案。我正在調查.apply(),但我不確定它是否有幫助。這篇文章在堆棧溢出中有一定幫助,但是我把它放到.done()函數中的那一分鐘。
Functions as parameters (with parameters) -- JavaScript
FWIW,延遲的對象不會改變這個,它只是函數的工作方式。這個值不是由函數定義的方式/位置決定的,而是如何調用的。 –