我正在编写一种将方法调用存储到对象中的方法:
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对象有一个参数列表,但我的函数有多个参数。我该如何做到这一点?
答案 0 :(得分:8)
使用.apply
:
fn.apply( this, action.params );
这会调用fn
,但使用第一个参数来设置this
的{{1}}值,并使用第二个参数的个别成员(fn
数组)将调用的参数填充为单个参数。
我注意到你正在做的事情:
action.params
您实际上将方法名称作为字符串:
window[action.method]