Module pattern использует замыкания (обычно через IIFE — Immediately Invoked Function Expression) для создания приватной области видимости. Только выбранные свойства и методы выставляются наружу как публичный API, всё остальное остаётся скрытым.
const myModule = (function () {
// Private variable — недоступна снаружи
let privateData = 0;
function privateHelper() { /* internal logic */ }
// Public API — exposируется только это
return {
increment() { privateData++; },
getValue() { return privateData; }
};
})();
privateData и privateHelper никогда не доступны снаружиДо того как ES6 modules (import/export) стали стандартом, Module pattern был основным подходом для инкапсуляции JavaScript кода в браузерах. Библиотеки вроде jQuery и Lodash активно использовали этот паттерн. Сегодня нативные ES6 modules решают эту задачу элегантнее, но понимание Module pattern остаётся важным для работы с legacy codebases и осознания того, как замыкания позволяют достичь инкапсуляции.
Module pattern полагается на closures, чтобы сохранять доступ к приватным переменным даже после того, как IIFE закончил выполняться, позволяя возвращаемым методам сохранять ссылки на приватный scope.
Новый — ещё не проверен сообществом
Вы