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,我知道哪种语法有效,这只是一个做作的例子,我正在讨论这个问题。谢谢,这是我一直在寻找的。谢谢,这是我一直在寻找的。