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
相关推荐
川冰ICE2 分钟前
JavaScript入门⑤|数组方法全攻略,map/filter/reduce三剑客
开发语言·javascript·ecmascript
倒流时光三十年7 分钟前
设计模式 之 责任链模式
设计模式·责任链模式
threelab13 分钟前
Three.js 抽象艺术着色器效果 | 三维可视化 / AI 提示词
前端·javascript·人工智能·3d·着色器
008爬虫实战录23 分钟前
【码上爬】 题十八:模拟大厂加密算法, 堆栈分析找加密点,扣自执行函数,jsdom补环境
开发语言·javascript·ecmascript
萌新小码农‍24 分钟前
Python的input函数
java·前端·python
2301_8035389528 分钟前
CSS复合属性实战技巧与交互设计应用
前端
nashane31 分钟前
HarmonyOS 6学习:Web组件内嵌H5视频全屏“复活”指南
前端·学习·harmonyos
BY组态31 分钟前
Ricon组态系统:新一代Web可视化组态平台
前端·物联网·iot·web组态·组态
skywalk816333 分钟前
脚本 isMobile.js(移动设备检测库)的核心实现
开发语言·javascript·ecmascript
i_am_a_div_日积月累_37 分钟前
3.contextBridge桥梁
前端·javascript·vue.js·electron