微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将对对象的引用传递给匿名函数

| 我需要将对当前对象的引用传递给匿名函数。在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/     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。