前言

单例模式是一种常见的软件设计模式。我们都知道定义了一个类,通过 new 可以实例化出若干个对象,但是在某些场景下,我们希望一个类只能存在唯一的对象,比如购物车、登陆框、音乐播放页面的切换、redux 和 vuex 的 store等等,通过单例模式就可以满足这些场景的需求。


一、单例模式是什么?

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

二、简单演示例子

使用闭包实现

原理:利用闭包在函数运行结束后,依然可以保存函数作用域中变量的特性,通过一个闭包函数检查该对象是否被创建,如果被创建就返回该对象,否则就先创建该对象再返回,这样就实现了一个类只能创建一个对象。

代码如下:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>单例模式</title></head><body><div id="" ><button type="button" id="btn">创建单例</button></div><script type="text/javascript">// 创建登陆框let loginBox = function(){let div = document.createElement("div");div.innerHTML = "this is a loginLay";div.style.display = "none";document.body.appendChild(div);return div;}//相当于中间人角色,用闭包保存变量的特性来保证 loginBox 只执行一次let getSingle = function(fn){var result; //用来保存loginBox对象return function(){return result ||(result = fn.apply(this,arguments))}}var create = getSingle(loginBox);let btn = document.getElementById("btn").onclick = function(){let login = create();login.style.display = "block";}</script></body>
</html>

总结

单例模式可以使用多种方式实现,在js中经常使用闭包实现。单例模式保证了系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能。

JavaScript设计模式——单例模式(闭包实现)相关推荐

  1. JavaScript设计模式----单例模式

    声明:这个系列为阅读<JavaScript设计模式与开发实践> --曾探@著一书的读书笔记 1.单例模式的特点和定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点. 2.传统面向 ...

  2. JavaScript设计模式——单例模式的理解与应用

    JavaScript设计模式--对单例模式的一些见解 JavaScript设计模式主要分类: ①创建型设计模式,例如单例模式.工厂模式 ②结构型设计模式,例如装饰者模式.适配器模式 ③行为型设计模式, ...

  3. javascript设计模式--单例模式

    什么是单例模式 单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例作为一个 ...

  4. JavaScript设计模式 单例模式

    单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 先看一下,在Js中使用传统面向对象的单例模式. 面向对象的单例模式,是通过new关键字来实例化我们想要的对象,并将其赋值给in ...

  5. javascript设计模式-单例模式(singleton pattern)

    为什么80%的码农都做不了架构师?>>>    最简单的单例模式 var mySingleton = {property1: "something",proper ...

  6. JavaScript设计模式——单例模式

    单例模式 单例模式顾名思义就是只生成一个实例对象的一种模式.无论调用多少次都只返回相同的实例. 当我们单击登录按钮的时候,页面中会出现一个登录浮窗,而这个登录浮窗是唯一的,无论单击多少次登录按钮,这个 ...

  7. JavaScript 设计模式核⼼原理与应⽤实践之单例模式——Vuex的数据管理哲学

    JavaScript 设计模式核⼼原理与应⽤实践之单例模式--Vuex的数据管理哲学 保证一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式就叫做单例模式. 单例模式的实现思路 思考这样一个 ...

  8. Javascript设计模式之单例模式

    前言:菜鸡也有梦想,而我的梦想就是进一个真正的互联网大厂.以前学习的时候没有系统的整理,从今天开始要保持每周写博客的习惯,希望自己可以有所成长.为了培养编程思维,决定从设计模式开始写起.我是通过读&l ...

  9. JavaScript设计模式与开发实践系列之单例模式

    本系列为<JavaScript设计模式与开发实践>(作者:曾探)学习总结,如想深入了解,请支持作者原版 单例模式 实现单例模式 单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的 ...

  10. JavaScript设计模式与开发实践 - 单例模式

    引言 本文摘自<JavaScript设计模式与开发实践> 在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返 ...

最新文章

  1. 哈佛牙学院博士后:教你口腔保健基本功之刷牙篇
  2. Linux+db2+was部署问题总结
  3. 每日程序C语言43-链表原地逆置
  4. 字符串操作以及打印 —— 实现上传下载的进度条功能
  5. n元n次方程求解c 语言,解n元一次方程
  6. python 类和对象 经常用吗_python基础教程之对象和类的实际运用
  7. 如何用好埋点中的数据
  8. 【剑指 offer】(二十九)—— 数组中出现次数超过一半的数字(及该数字出现的次数)
  9. x.view(-1,4)
  10. 2020年下半年软件设计师上午真题及答案解析(个人见解+网络解答+持续更新)
  11. Excel单元格设灰色及锁定
  12. Git- 报错 error: bad signature 0x00000000 fatal: index file corrupt
  13. windows系统下scheme语言编程环境的搭建
  14. 京东云php环境配置,玩转京东云主机之④-利用宝塔软件搭建服务器PHP环境
  15. 在 Mac 上多开微信,还能看到朋友撤回的信息:WeChatTweak - 少数派
  16. 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[文件系统]
  17. 西瓜视频地址分析下载(2020-10-29)
  18. 安装ie9提示未能完成安装_win7系统安装Ie提示“Internet explorer未能完成安装”的解决方法...
  19. 语音信号a率压缩算法c语言,基于OMAP5912平台的语音压缩算法实现
  20. sqlconnection mysql_VS连接数据库的通用方法(SQL/MySql)

热门文章

  1. 计算机路径共享,如何访问共享文件夹路径
  2. STM32F103C8T6最小系统板原理图+PCB文件
  3. 全球最大智慧集装箱码头如何做到“空无一人”?
  4. 修改dns服务器有什么用,修改dns的好处是什么?
  5. iOS PDF 添加图片
  6. 打通企业数智化最后一公里!CDEC2021上海优秀数智生态伙伴奖项颁布~!
  7. 心电监护仪数据图解_心电监护仪数据怎么看
  8. SQLite Expert查看SQLite数据库文件没有数据的问题
  9. mysql连接失败问题
  10. 04.使用元字符 (Python)