Tôi đang cố gắng để có một đối tượng javascript chạy một phương thức trì hoãn và khi nó là .done() gọi một hàm trong cùng một đối tượng đó. Tôi đang gặp vấn đề bởi vì "điều này" trở thành đối tượng trì hoãn thay vì đối tượng gọi nó.Thay đổi được hoãn lại của 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");
Làm cách nào để gửi "điều này" vào successFunction? PageObject này sẽ được mở rộng bởi những người khác, vì vậy biết "điều này" khi chạy successFunction sẽ rất tiện dụng.
Có vẻ như đơn giản và có thể có câu trả lời đơn giản. Tôi đã nhìn vào .apply() nhưng tôi không chắc chắn nó đã giúp. Bài đăng trên tràn ngăn xếp này hữu ích một chút, nhưng nó đã phá vỡ phút tôi đặt nó vào hàm .done().
Functions as parameters (with parameters) -- JavaScript
FWIW, đối tượng trì hoãn không thay đổi điều này, nó chỉ hoạt động như thế nào. Giá trị của điều này không được xác định bằng cách/nơi một hàm được định nghĩa, nhưng nó được gọi như thế nào. –