我正在编写一种将方法调用存储到对象中的方法:
var action = {'method':'foo', 'params': [1,'bob',45]}
我有我的方法:
function foo(order, name, size);
function bar(input);
function baz(name, length, time, debug);
等等
当给定一个 Action 时,我希望自动调用与之关联的函数:
var fn = window[action.method]
if(typeof fn === 'function')
{
fn(//blah)
}
问题是, Action 对象有一个参数列表,但我的函数有多个参数。我该如何实现?
最佳答案
使用.apply
:
fn.apply( this, action.params );
这会调用 fn
,但使用第一个参数来设置 fn
的 this
值,并使用第二个参数的各个成员(action.params
数组)将调用的参数填充为单独的参数。
我会注意到,因为你正在做:
window[action.method]
您实际上将方法名称作为字符串:
{'method':'foo',...}
关于javascript - 当我只有一个值列表时,如何调用采用多个参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513705/