Jquery 将对对象的引用传递到匿名函数

Jquery 将对对象的引用传递到匿名函数,jquery,Jquery,我需要将对当前对象的引用传递到匿名函数中。在Mootools中,应该是这样的: this.start = function(){ this.intervalId = setInterval(function(){ this.elapsedTime ++; this.setTime(); }.bind(this), 1000); } 但我需要使用jQuery来完成,jQuery不支持这种语法。我

我需要将对当前对象的引用传递到匿名函数中。在Mootools中,应该是这样的:

    this.start = function(){

        this.intervalId = setInterval(function(){

            this.elapsedTime ++;
            this.setTime();

        }.bind(this), 1000);
    }
但我需要使用jQuery来完成,jQuery不支持这种语法。我能做什么?我试过:

    this.start = function(){

        var thisObj = this;
        this.intervalId = setInterval(function(){

            thisObj.elapsedTime ++;
            thisObj.setTime();

        }, 1000);
    }
但看起来thisObj只是一个新对象,因为它的一些方法(在init方法中被赋值)现在是空的

请告知:

将此OBJ更改为全局,使其存在于启动功能之外。按照您的方式,setInterval函数调用不知道thisObj是什么

工作示例:

为了证明Felix的观点,OP的代码确实有效:

您的代码应该有效,thisObj不引用新对象。它引用了这个。如果此代码不起作用,则意味着您没有正确调用start,甚至bind在这里也帮不了您

因此,您必须首先修复代码,确保以正确的方式调用start,如myobj.start

但在任何情况下,jQuery都提供了以下方法:


它的作用与.bind相同。

不,应该可以。请创建一个演示。这可能取决于您如何调用start。OP的代码应该可以工作。在更高的范围内提升变量不会产生任何影响。传递给setInterval的函数是一个闭包,可以访问start中定义的变量。谢谢。我现在有了:console.logthis.timerInputs.hours;this.intervalId=setInterval$.proxyfunction{console.logthis.timerInputs.hours;this.elapsedTime++;this.setTime;},this,1000;这是计时器的脚本,因此This.timerInputs.hours是小时的输入对象。问题是console.logthis.timerInputs.hours;在setInterval之前返回有效对象,但在setInterval之后返回空对象
var thisObj = null;

this.start = function(){

    thisObj = this;
    this.intervalId = setInterval(function(){

        thisObj.elapsedTime ++;
        thisObj.setTime();

    }, 1000);
}
this.intervalId = setInterval($.proxy(function(){
    this.elapsedTime ++;
    this.setTime();
}, this), 1000);