我需要将参数作为真实参数传递给回调函数。我怎么做?回调需要可变数量的参数。
示例函数如下:
var func = function (callback) {
doSomething(function () {
// the goal is to pass on the arguments object to the callback function as real arguments
callback(arguments)
});
}
提前致谢。
这可能是一个类似的问题: Is it possible to send a variable number of arguments to a JavaScript function?
但我不明白这个问题,也没有答案。
编辑:如果可能的话,我不想污染全球。
答案 0 :(得分:18)
使用apply来调用回调,以便将数组项作为函数的单独参数传递。
callback.apply(this, arguments);
apply
获取上下文,数组作为参数,数组的每个项都可以作为被调用函数的命名参数传递。
function two(first, second) {
alert(first), alert(second);
}
two.apply(null, ["Hello", "World"]); // alerts "Hello", then "World"
ES3的实现要求apply
的第二个参数是数组或参数对象。 ES5使它更自由,只要它类似于数组 - 具有length
属性和相应的整数索引,它就可以工作。