나는 여전히 js oop에서 나를 괴롭히는 문제가있다 - 나는 그것을 나쁘게하고있다라고 확신한다. 그러나 나는 그것을 올바르게하는 방법을 알지 못한다. 그 내가 참조를 잃은 탓에 "이"-자바 스크립트 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을 기능에 대한 액세스를 질수 있다는 것입니다.
이 문제의 해결책은 무엇입니까? 어떻게 든이 "var"변수를이 함수의 컨텍스트에 전달할 수 있습니까?
감사합니다.
var self = this;
request.onloadend = function() {
...
self.setToken(token);
...
};
나는 다른 것이 더 직접적이라고 생각한다. 코드는 최소한으로 바뀌므로 어떤 의사 키워드를 사용할 지 결정할 필요가 없다. 그냥 말해. – Esailija
@Esailija : 저도 그렇지만 슬프게도 그 실질적인 가치는 브라우저 호환성으로 인해 제한됩니다. – Jon
'XHR.onloaded'와의 근원 점 – Esailija