0

我进行了一些搜索并提出了 .apply() 和 .call(),但它们的行为似乎不像我需要的那样。

说我有

function example(someparam, anotherparam, finalparam){
}

我可以动态地传递一个数组来匹配这些参数吗?这样,如果我试图将 value1 传递给“someparam”,将 value2 传递给“anotherparam”,并将 value3 传递给“finalparam”,我可以使用像 [value1, value2, value3] 这样的数组吗?

假设这些值是:

valueArray = [value1, value2, value3];

我认为有可能做到

example.apply(valueArray);

这可能吗?我知道可以通过传递对象来动态处理参数,但是我需要这样做来不要求目标函数需要一个对象。

4

2 回答 2

1

您的代码不完整...您可以使用

example.apply(this, valueArray);
于 2013-10-24T02:27:08.600 回答
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).

于 2013-10-24T02:38:46.803 回答