Tôi gặp vấn đề vẫn làm phiền tôi trên js oop - Tôi chắc chắn tôi đang làm điều đó xấu, nhưng tôi không thể làm thế nào để làm điều đó đúng.Javascript OOP - mất điều này trong gọi lại không đồng bộ
Ví dụ, tôi có mã này
Auth.prototype.auth = function() {
var request = new XMLHttpRequest();
request.open('GET', this.getAuthServerURL() + '/token', true);
request.send();
request.onloadend = function() {
var response = JSON.parse(request.responseText);
console.log(response);
if(response.result == 'found') {
var token = response.token;
this.setToken(token);
this.isSigned = true;
} else {
console.log('Not logged yet.');
}
}
}
Vấn đề là tôi không thể truy cập vào chức năng setToken từ bối cảnh "request.onloadend" chức năng - nó có lẽ vì tôi đã mất liên quan đến "này".
Giải pháp cho vấn đề này là gì? Tôi có thể bằng cách nào đó vượt qua "này" var để bối cảnh của chức năng này?
Cảm ơn!
Tôi nghĩ người kia là trực tiếp hơn, mã được thay đổi tối thiểu và bạn không cần phải quyết định từ khóa giả để sử dụng. Chỉ cần nói. – Esailija
@Esailija: Tôi cũng vậy, nhưng thật đáng buồn là giá trị thực tế của nó bị hạn chế bởi tính tương thích của trình duyệt. – Jon
Điểm tranh luận với 'XHR.onloaded' – Esailija