Итак, у меня есть класс с несколькими методами, один из методов используется как обратный вызов. Но в зависимости от того, как я объявляю обратный вызов, указатель this
имеет коммутируемый контекст. Мне интересно, как сделать эту работу, где указатель this
- это сам объект.Переключение контекста внутри объекта - ссылаясь на «это» в обратном вызове
Пример моего вопроса:
return {
init: function(){
this.starting = 0;
var _this = this;
$.ajax({/* some params */})
.done(function(response){
_this.addOne(); // here the context is fine, one gets added
})
.fail(_this.subtractOne); // the callback points to the function below,
// but 'this' doesn't point to the same thing
},
addOne: function(){
this.starting++;
},
subtractOne: function(){
this.starting--;
}
}
Как я могу использовать обозначения, что .fail
использует, но все-таки вычитать правильно?
Посмотрите в использовании [Связанная] (https://developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind), который позволяет вам выбрать значение 'this', которое вы хотите использовать в функции, которую вы вызываете. – saadq
Вы должны использовать тот же синтаксис, который вы использовали для вашего завершенного вызова, т.е. '.fail (function() {_this.subtractOne();})' – Stouffi
@Stouffi, я понимаю, какой синтаксис работает, это всего лишь надуманный пример чтобы у меня проблема. – SoluableNonagon