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

→ Ссылка