我有一组存储在对象
中的函数func1(a,b,c)
func2(a,b)
func3(a,b,c,d,e,f,g...)
var functionsContainer = {f1: func1, f2: func2, f3: func3};
如果我有一个构造函数接受functionsContainer
中函数的名称和带有
var args = {a: 1, b: 2};
var t = MyConstructor("f2", args);
如何通过传递的参数调用f2
函数?只有eval()?
答案 0 :(得分:1)
您不需要eval:
var func2 = functionsContainer["f2"];
var args = {a:1,b:2};
// map the args into an array
var array = $.map(args, function(value, index) {
return [value];
});
// apply works with an array
func2.apply(this, array);
答案 1 :(得分:1)