<分区>
Possible Duplicate:
How can I pre-set arguments in JavaScript function call? (Partial Function Application)
我需要能够传递对具有给定参数集的函数的引用。
下面是一个不带参数传递引用的例子:
var f = function () {
//Some logic here...
};
var fr = f; //Here I am passing a reference to function 'f', without parameters
fr(); //the 'f' function is invoked, without parameters
现在我需要做的是传递相同的 f
函数,但这次我需要将参数传递给引用。现在,我可以用一个匿名函数来完成它,并在新创建的函数中调用带有参数的 f
函数,如下所示:
var f = function () {
//Some logic here...
};
var fr = function (pars) {
f(pars);
}; //Here I am creating an anonymous function, and invoking f inside it
fr({p : 'a parameter'}); //Invoking the fr function, that will later invoke the f function with parameters
但我的问题是,有没有一种方法可以将带有参数的 f
函数的直接引用传递给 fr
,但不将其包含在匿名中功能?
我需要将什么分配给 fr
以使其无需参数即可调用 (fr()
),以便 f(1,2,3)调用fr
时执行?
[更新] 我关注了Jason Bunting对 here 的回答关于 Partial Function 和他发布的 JavaScript 函数正是我要找的。这是解决方案:
function partial(func /*, 0..n args */) {
var args = Array.prototype.slice.call(arguments).splice(1);
return function() {
var allArguments = args.concat(Array.prototype.slice.call(arguments));
return func.apply(this, allArguments);
};
}