我搜索了一下并提出了.apply()和.call(),但它们似乎并不像我需要的那样。
说我有
function example(someparam, anotherparam, finalparam){
}
我能动态传递一个数组来匹配这些参数吗?这样,如果我试图将value1传递给'someparam',将value2传递给'anotherparam',将value3传递给'finalparam',我可以使用像[value1,value2,value3]这样的数组吗?
说出这些值是否为:
valueArray = [value1, value2, value3];
我认为可能会这样做
example.apply(valueArray);
这可能吗?我理解通过传递对象可以动态处理参数,但我需要这个不要求目标函数需要一个对象。
答案 0 :(得分:1)
您的代码不完整......您可以使用
example.apply(this, valueArray);
答案 1 :(得分:0)
Javascript函数可以传递任意数量的参数,其余的只是未定义。
在示例功能中,您可以使用arguments.length
。如果它为1,则假设您传递了一个包含三个值的数组。否则继续正常进行。您也可以只检查第一个参数的类型或检查最后两个参数的类型。类似的东西:
function example(someparam, anotherparam, finalparam){
if(typeof someparam === "Array") {
finalparam = someparam[2];
anotherparam = someparam[1];
someparam = someparam[0];
}
//continue as normal
}
如果您无法修改该功能,则可以使用example.apply(undefined, valueArray)
。