Javascript OOP -потерял это в асинхронном обратном вызове

У меня есть проблема, которая все еще беспокоит меня на js 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.');
      }
    }
}

Проблема в том, что я не могу получить доступ к функции setToken из контекста функции «request.onloadend» -, вероятно, потому, что я потерял ссылку на «это».

Какое решение этой проблемы? Могу ли я как-то передать «эту» переменную в контекст этой функции?

Спасибо!

7
задан xdazz 9 July 2012 в 10:43
поделиться