javascript - 如何使用单独变量(对象)中指定的参数调用函数?

标签 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() 吗?

最佳答案

您不需要评估:

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);

关于javascript - 如何使用单独变量(对象)中指定的参数调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29467558/

相关文章:

javascript - 具有多个逗号分隔值的变量声明意味着什么(例如 var a = b,c,d;)

即使没有传递任何内容,JavaScript bool 变量也为 true

javascript - for 循环中生成的警报太多

eval - 为 `git commit` 创建别名接受 N 个任意 `-m` 参数

linux - 为什么这行 Shell 在 eval() 中有效但在 bash 中失败

javascript - 转义 JavaScript 字符串中的单引号以进行 JavaScript 评估

javascript - Promise Chaining 和 .then/.catch 语句

javascript - 跟踪变量实例

CodeIgniter 为所有 Controller 调用相同的函数

javascript - 自调用匿名函数格式之间的差异