Во время работы над каким -либо кодом инструментов мне нужно было передать функцию и неизвестное количество аргументов в другую функцию, которая затем приведет к выполнению этой функции. Это оказалось довольно легко, используя fn.prototype.apply .
Допустим, мы хотим вызвать функцию, но выполнить какой -то другой код, мы сделали бы это здесь:
function invokeCallback(callback) {
var params = Array.prototype.slice.call(arguments, 1);
return callback.apply(null, params);
}
И вот наши три разнообразных функции:
function action() {
console.log('action');
}
function greet(msg) {
console.log(msg);
}
function nameage(name, age) {
var msg = 'My name is ' + name + ' and my age is ' + age;
console.log(msg);
}
И вот как мы можем назвать их динамически, без инвестирования, чтобы что -либо знать о них:
invokeCallback(action); invokeCallback(greet, 'Hello!'); invokeCallback(nameage, 'Bob', '20');
Удивительно.
Оригинал: “https://dev.to/adamkdean/invoke-callbacks-with-unknown-arguments-51fo”