Javascript ООП - потерял это в асинхронном обратном вызове
У меня есть проблема, которая до сих пор беспокоит меня - я уверен, что я делаю это плохо, но я не могу понять, как это сделать правильно.
Например, у меня есть этот код
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.');
}
}
}
Проблема в том, что я не могу получить доступ к функции setToken из контекста «request.onloadend» Функция - вероятно, потому что я потерял ссылку на "это".
Какое решение этой проблемы? Могу ли я как-нибудь передать «это» вар к контексту этой функции?
Спасибо!