【发布时间】:2012-11-16 15:40:42
【问题描述】:
让我们看看这段代码:
var mainFunction = function() {
altFunction.apply(null, arguments);
}
传递给mainFunction 的参数是动态的——它们可以是4 或10,没关系。但是,我必须将它们传递给 altFunction 并且我必须在参数列表中添加一个 EXTRA 参数。
我试过这个:
var mainFunction = function() {
var mainArguments = arguments;
mainArguments[mainArguments.length] = 'extra data'; // not +1 since length returns "human" count.
altFunction.apply(null, mainArguments);
}
但这似乎不起作用。我该怎么做?
【问题讨论】:
-
not +1 since length returns "human" count是什么意思? -
.length 返回 4 如果数组是 0, 1, 2, 3 它不返回 3,希望你现在明白了。这就是我的意思:P
-
好吧,但这是
.length的预期行为。当您使用arr[arr.length] = "whatever"时,它与使用.push()的行为相同,只是将项目添加到数组的末尾。您的问题是arguments不是数组,因此您需要使用提供的许多类似解决方案之一。 -
实际上,您几乎拥有它。如果您在调用 apply 之前也执行
arguments.length++,您的代码将照常运行。
标签: javascript