如何让JavaScript访问';展开';参数数量可变?
例如,假设我有以下两个函数如何让JavaScript访问';展开';参数数量可变?,javascript,Javascript,例如,假设我有以下两个函数 function a(param1) { console.log(param1); } function b(func, params) { func(params); } 然后 按预期打印“1” 现在假设我有一个附加函数 function c(param1, param2) { console.log(param1, param2); } 有没有类似的方法 b(a, 1); 除了两个参数?类似于下面的内容 b(c, [2, 3]);
function a(param1) {
console.log(param1);
}
function b(func, params) {
func(params);
}
然后
按预期打印“1”
现在假设我有一个附加函数
function c(param1, param2) {
console.log(param1, param2);
}
有没有类似的方法
b(a, 1);
除了两个参数?类似于下面的内容
b(c, [2, 3]);
当[2,3]array展开为单个参数时您要使用函数的
apply
方法。因此,在b
中,使用func.apply(这个,参数)
而不仅仅是func(参数)
apply
的第一个参数是设置该的对象;第二个参数是要传递给函数的参数数组
因此类似于b.foo(1,2,3)
的东西与foo.apply(b[1,2,3])
的东西是一样的,假设b.foo=foo
类似这样的东西:
function b(func) {
func.apply(null, [].slice.call(arguments, 1));
}
function b(func) {
func.apply(null, [].slice.call(arguments, 1));
}