如何在没有eval的情况下动态构造函数的参数?

时间:2018-09-16 02:03:54

标签: javascript

给出以下代码:

var arr = ['one', 'two'];
var obj = {
  func: function(a, b) {
    console.log(a, b);
  }
};

有没有一种方法可以动态构造函数调用,而无需使用eval()来传递数组中的项目作为参数?基本上,这相当于:

eval('obj.func(' + arr.join(',') + ')');

1 个答案:

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