当我有一个值列表时,如何调用一个接受多个参数的方法?

时间:2011-12-15 00:36:21

标签: javascript json

我正在编写一种将方法调用存储到对象中的方法:

var action = {'method':'foo', 'params': [1,'bob',45]}

我有我的方法:

function foo(order, name, size);

function bar(input);

function baz(name, length, time, debug);

当我给出动作时,我希望自动调用与之关联的功能:

var fn = window[action.method]
if(typeof fn === 'function')
{
    fn(//blah)
}

问题是,action对象有一个参数列表,但我的函数有多个参数。我该如何做到这一点?

1 个答案:

答案 0 :(得分:8)

使用.apply

fn.apply( this, action.params );

这会调用fn,但使用第一个参数来设置this的{​​{1}}值,并使用第二个参数的个别成员(fn数组)将调用的参数填充为单个参数。


我注意到你正在做的事情:

action.params

您实际上将方法名称作为字符串:

window[action.method]