Модульный паттерн — очень популярная на практике архитектура кода. Как следует из названия, эта архитектура обеспечивает модульность кода.

мы определяем модуль переменной const, который является IIFE (выражение функции с немедленным вызовом). Разве мы не определили это в IIFE, тогда нам пришлось вызывать функцию примерно так

модуль().somePublicMethod();

Теперь, говоря о методах внутри нашего модуля, мы определили somePrivateMethod как закрытый метод нашего модуля, который можно вызывать внутри нашего модуля для выполнения некоторых внутренних вычислений. Эта функция не будет доступна вне нашего модуля и не может быть вызвана напрямую через переменную модуля.

module.somePrivateMethod() // выдает ошибку

В следующей части мы вернули объект, содержащий пару ключ-значение. Ключ — это имя вызывающей функции, а значение — функция, которую нужно выполнить. Эти функции доступны публично для вызова через переменную модуля. Кроме того, эти функции могут использовать всю нашу внутреннюю приватную функцию для вычисления некоторых результатов.