例如,假设我有以下两个函数
function a(param1) {
console.log(param1);
}
function b(func, params) {
func(params);
}
然后
b(a, 1);
按预期打印'1'
现在假设我有一个额外的功能
function c(param1, param2) {
console.log(param1, param2);
}
有没有办法做类似
的事情b(a, 1);
除了喂两个参数外?类似于以下内容
b(c, [2, 3]);
将[2,3] arrray展开为单个参数
答案 0 :(得分:5)
这样的事情:
function b(func) {
func.apply(null, [].slice.call(arguments, 1));
}
答案 1 :(得分:2)
您想使用apply
函数方法。因此,在b
内,使用func.apply(this, params)
而不仅仅是func(params)
。
apply
的第一个参数是将this
设置为的内容;第二个参数是传递给函数的参数数组。
b.foo(1,2,3)
之类的内容与假设为foo.apply(b, [1,2,3])
的{{1}}相同。