可能是重复问题:
如何在JavaScript函数调用中预设参数?(部分函数应用)
我需要能够传递一个带有一组给定参数的函数引用。
以下是传递没有参数的引用的示例:
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
时无需参数(fr()
),执行f(1,2,3)?
[更新] 我遵循Jason Bunting在这里关于部分函数的答案,并且他在那里发布的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);
};
}
Function.prototype.pass = function(){ var args=arguments, func = this; return function(){ func.apply(this,args);} };
- Muhammad Umer