如何使用单独的varible(object)中指定的参数调用函数?

时间:2015-04-06 08:03:18

标签: javascript function eval

我有一组存储在对象

中的函数
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()?

2 个答案:

答案 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)

使用callapply

functionsContainer["f1"].call(this, args)