概念:模块模式

JavaScript 中通过闭包实现私有成员的设计模式

解决的核心痛点:在 JavaScript 缺乏 class 私有成员关键字的时代,提供一种创建私有状态和方法的机制。


核心命题


运行机制

graph TB
    A[立即执行函数] --> B[创建闭包作用域]
    B --> C[私有变量]
    B --> D[私有方法]
    B --> E[返回公开对象]
    E --> F[公开方法]
    F -.-> C
    F -.-> D
const Counter = (function() {
  let count = 0; // 私有变量
 
  return {
    increment() { count++; return count; },
    getCount() { return count; }
  };
})();

关键区别

维度模块模式ESModule
语法函数表达式import/export
私有化约定俗成官方支持 private
加载同步异步

应用场景

  • 适用场景
    • 需要私有状态:如计数器、缓存
    • 库封装:创建不暴露内部实现的 API
  • 误用
    • 过度使用:现代项目优先用 ES6 Module

知识图谱


参考延伸