将函数调用作为参数传递

时间:2014-11-17 18:38:01

标签: javascript underscore.js

我有一个具有属性的对象:

var o = {
   "f1":function(){alert('invoke one');},
   "f2":function(){alert('invoke two');},
   "f3":function(){alert('invoke three');}
};

我打算使用http://underscorejs.org/的_.each来调用它们。 所以,我的调用看起来像

_.each(o, function(f){f();});

令人恼火的是_.each的第二个参数。如果有这样的功能“调用”,我可以调用_.each(o,invoke);

我知道定义调用非常简单:

function invoke (f){f();}

但我只是想知道是否有任何我不知道的内置内容。

1 个答案:

答案 0 :(得分:2)

没有本地功能可以做到这一点。您可以通过.call

获得一些乐趣
var invoke = Function.prototype.call.bind(Function.prototype.call)

但是像你那样声明invoke要简单得多。

使用Underscore.js,您可以使用invoke method

_.invoke(o, Function.prototype.call);
_.invoke(o, "call");
_.invoke(o, Function.prototype.apply, []);
_.invoke(o, "apply", []);
相关问题