Sto tentando di fare in modo che un oggetto javascript esegua un metodo differito e quando è .done() chiama una funzione nello stesso oggetto. Sto avendo problemi perché "questo" diventa l'oggetto posticipato anziché l'oggetto che lo ha chiamato.JQuery differito cambia "questo"
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");
Come si invia "questo" in SuccessFunction? Questo PageObject sarà esteso anche da altri, quindi sapere "questo" quando si esegue SuccessFunction sarà molto utile.
Sembra semplice e probabilmente ha una risposta semplice. Stavo esaminando .apply() ma non sono sicuro che ci abbia aiutato. Questo post sull'overflow dello stack è stato utile un po ', ma si è rotto nel momento in cui l'ho inserito nella funzione .done().
Functions as parameters (with parameters) -- JavaScript
FWIW, l'oggetto posticipato non sta cambiando questo, è solo il modo in cui funzionano le funzioni. Il valore di questo non è determinato da come/dove è definita una funzione, ma da come viene chiamata. –