High order функции
Не могу понять как работать с объектом или массивом функций.
К примеру есть функция и я ожидаю, что переданные аргументы, будут перебраны и по очереди вызваны. К примеру как map или forEach.
const Myfunctions = { func1, func2, func3 }
const allCallFunctions = ({...functions}) => {
functions.map(func => func());
}
Если может кто объяснить, то как для чайника или если нет желания расписывать, просто ссылку где почитать.
p.s. с high order функциями знаком, но под такой расклад ничего не нашёл, самому мозгов не хватило. Спасибо.
Ответы (1 шт):
хорошая фантазия, но метод map работает только с массивами, а Вы пытались скормить ему деструктуризованный объект. тем более map всегда возвращает новый массив (для этого он и предназначен). а у Вас в коде map возвращает в никуда новый массив с результатами выполненных функций.
решения проблемы на мой взгляд:
а) передавать как аргумент массив с функциями, а не объект и вызывать их через forEach, например:
const Myfunctions = [ func1, func2, func3 ];
const allCallFunctions = functions => {
functions.forEach(func => func());
}
б) передавать объект с функциями (как у Вас и было первоначально), но вызывать их через цикл итерации объектов, например:
const Myfunctions = { func1, func2, func3 };
const allCallFunctions = ({...functions}) => {
for (let func in functions) {
func();
}
}
или же перебрать аргумент functions через Object.values (переделать в массив) и тоже вызывать через forEach