我有一些 javascript 代码(在一个对象内):
toggle: function() {
var me = this;
var handler = function() { me.progress() };
me.intervalId = setInterval(handler, me.intervalTime);
//...More code
}
我是 javascript 的新手,所以据我所知,执行上述操作实际上通过了
me
变量到匿名函数中。我想看看是否有一种更具声明性的方式来做到这一点?我想要一些类似的东西:var handler = (function(o) { o.progress();})(this));
但这似乎不起作用......我错过了什么吗?这是“这是语言的工作方式,所以只需声明一个局部变量并处理它”的情况吗?
更新:
我的问题的根源是/是我对javascript中的范围和闭包的不清楚的理解。我找到了this article帮助我了解更多。
最佳答案
您可以使用“.bind()”:
var handler = function() { this.progress(); }.bind(this);
新浏览器有“bind()”和Mozilla docs有一个可靠的实现,你可以用它来修补旧的浏览器。
关于javascript匿名函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6188861/