Классический Module pattern — IIFE + замыкание: наружу маленький public API, остальное private. Был критичен до стандартизированных модулей.
Для нового кода дефолт — ES modules: у файла module scope, явные import/export. Closures и #private поля — когда нужно per-instance private state.
var myModule = (function () {
var privateVar = "I am private";
functionprivateMethod() {
console.log(privateVar);
}
return {
publicMethod() {
privateMethod();
},
};
})();
myModule.publicMethod(); // I am private
Итог: инкапсуляция = скрыть детали, показать контракт. Сегодня это в первую очередь ES modules, не обязательно IIFE.
Что такое паттерн Module и как он помогает с инкапсуляцией? · Sobeso