Чтобы передать аргументы обернутой функции в JavaScript, вы можете использовать различные методы. Вот несколько подходов, которые вы можете использовать:
- Использование метода
apply(). Методapply()позволяет вызывать функцию с заданным значениемthis. и массив аргументов. Вы можете использовать его для передачи аргументов обернутой функции. Вот пример:
function wrapper(func, args) {
return function() {
return func.apply(this, args);
};
}
function wrappedFunction(arg1, arg2) {
console.log(arg1, arg2);
}
var args = ['Hello', 'world'];
var wrapped = wrapper(wrappedFunction, args);
wrapped(); // Output: Hello world
- Использование метода
bind(). Методbind()создает новую функцию, при вызове которой устанавливается ключевое словоthis. до определенного значения. Вы также можете передать аргументы методуbind(), и они будут добавлены к аргументам связанной функции. Вот пример:
function wrapper(func, args) {
return func.bind(this, ...args);
}
function wrappedFunction(arg1, arg2) {
console.log(arg1, arg2);
}
var args = ['Hello', 'world'];
var wrapped = wrapper(wrappedFunction, args);
wrapped(); // Output: Hello world
- Использование стрелочных функций. Стрелочные функции наследуют аргументы своей родительской области, поэтому вы можете получить к ним доступ непосредственно внутри стрелочной функции. Вот пример:
function wrapper(func, args) {
return () => func(...args);
}
function wrappedFunction(arg1, arg2) {
console.log(arg1, arg2);
}
var args = ['Hello', 'world'];
var wrapped = wrapper(wrappedFunction, args);
wrapped(); // Output: Hello world
- Использование синтаксиса остальных параметров. Синтаксис остальных параметров позволяет представлять неопределенное количество аргументов в виде массива. Вы можете использовать его для передачи аргументов обернутой функции. Вот пример:
function wrapper(func, ...args) {
return function() {
return func.apply(this, args);
};
}
function wrappedFunction(arg1, arg2) {
console.log(arg1, arg2);
}
var args = ['Hello', 'world'];
var wrapped = wrapper(wrappedFunction, ...args);
wrapped(); // Output: Hello world