Javascript 对象内部的上下文切换-在回调中引用“this”
我有一个类,有几个方法,其中一个方法用作回调。但根据我声明回调的方式,它的指针有一个切换上下文。我想知道如何使它在指针是对象本身的情况下工作 我的问题的一个例子:Javascript 对象内部的上下文切换-在回调中引用“this”,javascript,Javascript,我有一个类,有几个方法,其中一个方法用作回调。但根据我声明回调的方式,它的指针有一个切换上下文。我想知道如何使它在指针是对象本身的情况下工作 我的问题的一个例子: return { init: function(){ this.starting = 0; var _this = this; $.ajax({/* some params */}) .done(function(response){ _t
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使用的符号,但仍然正确地进行减法?bind将确保使用正确的此引用进行调用:
.fail( _this.subtractOne.bind( _this ) );
bind将确保使用正确的此引用进行调用:
.fail( _this.subtractOne.bind( _this ) );
因为这取决于函数的调用方式,而不是它的编写方式
jQuery调用其回调函数时,将此绑定到当前对jQuery有意义的任何对象,例如,对于事件处理程序,此绑定到触发事件的DOM元素
正因为如此,这一开始并不是你想象的那样
通过在函数上传递.bind的结果,可以强制将其设置为任意值,如下所示:
.fail(_this.substractOne.bind(_this));
因为这取决于函数的调用方式,而不是它的编写方式
jQuery调用其回调函数时,将此绑定到当前对jQuery有意义的任何对象,例如,对于事件处理程序,此绑定到触发事件的DOM元素
正因为如此,这一开始并不是你想象的那样
通过在函数上传递.bind的结果,可以强制将其设置为任意值,如下所示:
.fail(_this.substractOne.bind(_this));
研究如何使用该方法,该方法允许您选择要在调用的函数中使用的值。您应该使用与完成调用相同的语法,即failfunction{u this.subtractOne;}@Stouffi,我知道哪种语法有效,这只是一个人为的例子来解决我所遇到的问题。研究一下如何使用这个方法,让你选择你想在你调用的函数中使用的这个值。你应该使用你在完成调用时使用的相同语法,即failfunction{u this.subtractOne;}@Stouffi,我知道哪种语法有效,这只是一个做作的例子,我正在讨论这个问题。谢谢,这是我一直在寻找的。谢谢,这是我一直在寻找的。