【高频考点精讲】JavaScript中的单例模式:从闭包到class实现

JavaScript中的单例模式:从闭包到class实现

🧑‍🏫 作者:全栈老李

📅 更新时间:2025 年 5 月

🧑‍💻 适合人群:前端初学者、进阶开发者

🚀 版权:本文由全栈老李原创,转载请注明出处。

单例模式就像小区里唯一的快递柜——无论你从哪个门进去,看到的都是同一组柜子。作为全栈老李,今天要带大家深入这个看似简单却暗藏玄机的设计模式。

什么是单例模式?

想象你开发一个全局状态管理器,如果每次调用都new一个新实例,那数据同步会乱成一锅粥。单例模式的核心就是确保一个类只有一个实例,并提供全局访问点。在JavaScript这种没有真正"私有"概念的语言里,实现起来特别有意思。

先看个生活例子:公司里的打印机服务。如果每个部门都自己new一个打印机实例,耗材管理会疯掉。正确的做法是让整个公司共享同一个打印机服务实例——这就是单例的典型场景。

闭包实现:最经典的JS方式

// 全栈老李的单例模式闭包实现
const Singleton = (function() {
   
   
  let instance; // 闭包保存的私有变量
  
  function createInstance() {
   
   
    const object = new Object("我是全栈老李创建的实例");
    return object;
  }

  return {
   
   
    getInstance: function() {
   
   
      if (!instance) {
   
   
        instance = createInstance();
      }
      return instance;
    }
  };
})();

// 使用示例
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈老李技术面试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值