在js中将参数作为单独的参数传递

时间:2009-07-12 03:25:21

标签: javascript function prototype parameters arguments

在javascript中,如果我有一些函数,我可以使用arguments对象来查看传入了多少参数。有没有办法调用第二个函数并传递这些参数,好像它们只是正常的单独参数一样?

类似的东西:

function f()
{
g(arguments);
}

function g(a, b, c)
{
alert(a+b+c);
}

所以在这种情况下,如果我调用f(1,2,3),我会收到6的警告。为了清楚起见,我不是要尝试传递可变数量的参数,只是一种方法来传递arguments对象作为其他函数(可能是原生javascript函数)的正常单独参数

2 个答案:

答案 0 :(得分:8)

function f() 
{
    g.apply(this,arguments);
}

有关此技术的更多详情,请参阅https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/apply

另请注意,第一个参数定义了函数运行的上下文。为第一个参数传递null将只使用全局上下文(窗口)。

答案 1 :(得分:-1)

另一种方法是使用邪恶的eval();

我不建议这样做。

function f()
{
    var eval_string = "g(";
    for(var i=0; i<arguments.length; i++)
        eval_string += arguments[i] + ", ";  // if arguments[i] is an integer

    eval_string += ");"

    eval(eval_string);
}