Javascript 单例模式

一.是什么

单例模式是一种设计模式,它的核心思想是:整个系统中只能存在一个类的实例,并提供一个全局访问点来获取这个实例。

二. 有什么作用

作用 描述
全局唯一性 避免多个实例带来的资源浪费或数据不一致问题
共享状态 单例中的数据可被多个组件或模块共享
统一管理 管理某一类服务或工具,如缓存、日志、配置等
延迟初始化(惰性加载) 实例只在首次使用时创建,节省资源

三. 怎么用

复制代码
对象字面量
const Singleton = {
  name: '我是单例',
  sayHi() {
    console.log('Hi~', this.name);
  },
};

ES6 类 + 静态属性
class Singleton {
  constructor() {
    if (Singleton.instance) {
      return Singleton.instance;
    }
    this.name = '我是单例';
    Singleton.instance = this;
  }

  sayHi() {
    console.log('Hi~', this.name);
  }
}

// 使用
const a = new Singleton();
const b = new Singleton();
console.log(a === b); // true

四. 用在哪里

应用场景 描述
状态管理 Vuex、Redux 中的 Store 就是单例
缓存模块 数据缓存、接口响应缓存、资源预加载器等
工具类 日志工具、埋点统计、埋点 SDK 管理器
事件总线 作为全局 EventBus 控制通信
弹窗控制 Modal、Dialog 控制器,防止重复弹窗
配置中心 管理全局配置信息或运行环境信息
相关推荐
kyriewen4 小时前
别再对着 TypeScript 报错发呆了:我把 10 个最常见的红色波浪线翻译成了人话
前端·javascript·typescript
free354 小时前
从 0 实现一个 Tiny JavaScript VM:项目架构拆解
javascript
徐小夕6 小时前
我们开源了一款“框架无关”的思维导图编辑器,3分钟集成到任意系统
前端·javascript·github
PBitW6 小时前
GPT训练我的第三天,明白了应该咋说满分回答!😕😕😕
前端·javascript·面试
像我这样帅的人丶你还7 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
labixiong7 小时前
还原一个完整符合规范的 Promise(二)
前端·javascript
To_OC8 小时前
万字解析《JS 语言精粹》之第五章:继承 5 大核心精髓(JS 原型核心)
前端·javascript·代码规范
裕波9 小时前
AI 正在重写应用开发。Vue 与 Vite,给出新的答案。
javascript·vue.js
kyriewen10 小时前
折腾了半年 AI 编程工作流,最后发现效率瓶颈是桌上那块屏幕
前端·javascript·ai编程
张元清13 小时前
React useDebounce Hook:给状态和回调做防抖(2026)
javascript·react.js