如何解决将对对象的引用传递给匿名函数
| 我需要将对当前对象的引用传递给匿名函数。在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 举报,一经查实,本站将立刻删除。