JavaScript匿名函数参数传递

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

我有下面·JavaScript代码(在一个对象内):

toggle: function() {
    var me = this;
    var handler = function() { me.progress() };
    me.intervalId = setInterval(handler, me.intervalTime);
    //...More code
}

我写了可以实际上传递me变量到匿名函数。我想看看是否有更好的方式来做到这一点?我想要的东西是:

var handler = (function(o) { o.progress();})(this));

但似乎没有工作...我错在什么地方?

提问于
用户回答回答于

原因是

var handler = (function(o) { o.progress();})(this));

不工作,因为它只是立即调用anon函数,因此立即调用o.progress()并将anon函数(undefined)的返回值赋值给handler。你需要从外部函数返回一个实际的函数:

handler = (function(me){
    return function(){
        return me.progress();
    }
}(this));
用户回答回答于

你可以使用“.bind()”:

var handler = function() { this.progress(); }.bind(this);

新的浏览器有“bind()”,而Mozilla文档有一个可以用来修补旧浏览器的可靠实现。

扫码关注云+社区

领取腾讯云代金券