Можно создать дубликат:
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
, чтобы сделать его invokable без параметров (fr()
), так что F (1,2,3) выполняется, когда fr
вызывается?
[UPDATE] Я последовал Jason Bunting «s ответ на here о частичной функции и функции 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);
};
}
По какой-то причине, у меня были проблемы с первым утверждением (вар арг = Array.prototype.slice.call (аргументы) .splice (1);) и ему пришлось использовать это вместо: var args = new Array(); для (var i = 1; i
на всякий случай кому-то нужно это: 'Function.prototype.pass = function() { var args = arguments, func = this; return function() {func.apply (this, args);} }; ' –