9

我有两个函数 a() 和 b(),它们都是可变参数函数,比如说当我像这样调用函数 a() 时:

a(arg0, arg1, arg2, arg3, ...., argn);

那么函数 b() 也将在 a() 中被调用,但在 a() 的参数列表中没有第一个参数“arg0”:

b(arg1, arg2, arg3, ...., argn);

有什么办法吗?

4

1 回答 1

24

每个 JavaScriptfunction实际上只是另一个“对象”(JavaScript 意义上的对象),并带有一个apply方法(请参阅Mozilla 的文档)。因此你可以做这样的事情......

b = function(some, parameter, list) { ... }

a = function(some, longer, parameter, list)
{
   // ... Do some work...

   // Convert the arguments object into an array, throwing away the first element
   var args = Array.prototype.slice.call(arguments, 1);

   // Call b with the remaining arguments and current "this"
   b.apply(this, args);
}
于 2011-07-24T18:09:23.450 回答