JS-单例设计模式

设计模式:针对特定问题提出的简洁优化的解决方案

  • 构造函数或类仅仅只能实例化一次,得到一个实例对象
  • 比如:工具类
    • 在项目中使用工具类实例对象时,每一个实例对象的属性方法与功能作用都是一样的
    • 那么在项目中如果每次使用都需要重新实例化一个工具类对象,这样会造成内存浪费
      • 解决方案:工具类仅仅只实例化一次,得到一个实例对象,后续的每次使用则都直接使用该实例对象
        • 此时就可以使用单例设计模式来书写工具类
js 复制代码
// 利用闭包函数封装
let singleton = (function() {
    // 工具类
    class Utils { }
    let tool;
    return function () {
        // 每次使用都判断tool中是否已存在实例对象
        if (!tool) tool = new Utils();
        return tool;
    }
})();

let t1 = singleton();
let t2 = singleton();
console.log(t1 === t2); // true
相关推荐
是2的10次方啊10 分钟前
设计模式与生活⑨:一碗胡辣汤,用不着认识十几种香料
设计模式
陈随易27 分钟前
一个网吧网管,做了个网页,卖了 5000 万
前端·后端·程序员
jktantan9 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
总要学点什么9 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
2601_9628857210 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel10 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓10 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人11 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every11 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad11 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他