我有問題,仍然困擾着我對js oop - 我確信我做得不好,但我不能得到如何做到這一點。Javascript OOP - 在異步回調中丟失了這個
例如,我有這樣的代碼
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.');
}
}
}
的問題是,我不能訪問來自「request.onloadend」功能的上下文功能setToken - 它可能是因爲我失去了參照「本」。
這是什麼問題的解決方案?我可以以某種方式將「this」var傳遞給此函數的上下文嗎?
謝謝!
我認爲另一個更直接,代碼是最小改變,你不需要決定使用哪個僞關鍵字。只是說。 – Esailija 2012-07-09 10:48:12
@Esailija:我也是,但不幸的是它的實用價值受到瀏覽器兼容性的限制。 – Jon 2012-07-09 10:49:41
模擬點與'XHR.onloaded' – Esailija 2012-07-09 10:50:51