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

问题描述

| 我需要将对当前对象的引用传递给匿名函数。在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方法中为其赋值的某些方法现在为空。 请指教 :)     

解决方法

您的代码应该可以使用,
thisObj
不引用新对象。它引用
this
。如果此代码不起作用,则表示您未正确调用
start()
,即使
bind()
也无法为您提供帮助。 因此,您必须首先修复代码,确保您以正确的方式调用
start()
,例如like7ѭ。 但无论如何,jQuery提供了
$.proxy
方法:
this.intervalId = setInterval($.proxy(function(){
    this.elapsedTime ++;
    this.setTime();
},this),1000);
与ѭ10相同。     ,将
thisObj
更改为全局变量,使其不存在于
start
函数之外。 had13ѭ函数调用的方式将不知道know2ѭ是什么
var thisObj = null;

this.start = function(){

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

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

    },1000);
}
工作示例:http://jsfiddle.net/hunter/Swh9U/ 为了证明Felix的观点,OP的代码确实起作用:http://jsfiddle.net/hunter/Swh9U/1/