当前位置: 首页 > news >正文

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 控制器,防止重复弹窗
配置中心管理全局配置信息或运行环境信息

相关文章:

  • 【QT】 QGraphicsItem 获取点坐标的几种方法
  • vue3项目移动端实现进度条可手动滑动控制进度和点击控制进度
  • 我的世界进阶模组开发教程——开发机械动力附属模组(2)
  • 使用Python和PyTorch框架,基于RetinaNet模型进行目标检测,包含数据准备、模型训练、评估指标计算和可视化
  • linux 安装 opencv源码4.5.4记录
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_学习计划日历示例(CalendarView01_20)
  • Python图像处理基础(六)
  • (十三)计算机视觉中的深度学习:特征表示、模型架构与视觉认知原理
  • 第29节 Node.js Query Strings
  • ETLCloud中数据脱敏规则的使用技巧
  • Linux中source和bash的区别
  • 深度学习环境搭建(pycharm+yolov5)
  • STM32外设学习之串口
  • asio之socket_ops
  • 【线程与线程池】线程数设置(四)
  • 在 Flask 或 Tornado 中返回渲染后的页面内容
  • io_uring的异步IO机制
  • 【React】SWR 和 React Query(TanStack Query)
  • TCP/IP 网络编程 | Reactor事件处理模式
  • docker 网络
  • 香港公司注册代理/seo外包公司专家
  • 手机网站用什么开发/营销型网站有哪些平台
  • 门户网站流程图/百度服务电话6988
  • 网站建设报价单范本/搜索引擎优化解释
  • 广告传媒公司的网站应该怎么做/有友情链接的网站
  • ui设计就业方向有哪些?/seo网站关键词优化快速官网