给出以下代码:
var arr = ['one', 'two'];
var obj = {
func: function(a, b) {
console.log(a, b);
}
};
有没有一种方法可以动态构造函数调用,而无需使用eval()
来传递数组中的项目作为参数?基本上,这相当于:
eval('obj.func(' + arr.join(',') + ')');
答案 0 :(得分:2)
您可以spread将数组放入参数列表:
var arr = ['one', 'two'];
var obj = {
func: function(a, b) {
console.log(a, b);
}
};
obj.func(...arr);
或者,如果环境不支持传播,则可以使用apply
,它允许您调用将提供的数组转换为参数的函数:
var arr = ['one', 'two'];
var obj = {
func: function(a, b) {
console.log(a, b);
}
};
obj.func.apply(undefined, arr);