JavaScript设计模式——单例模式(闭包实现)
前言
单例模式是一种常见的软件设计模式。我们都知道定义了一个类,通过 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设计模式——单例模式(闭包实现)相关推荐
- JavaScript设计模式----单例模式
声明:这个系列为阅读<JavaScript设计模式与开发实践> --曾探@著一书的读书笔记 1.单例模式的特点和定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点. 2.传统面向 ...
- JavaScript设计模式——单例模式的理解与应用
JavaScript设计模式--对单例模式的一些见解 JavaScript设计模式主要分类: ①创建型设计模式,例如单例模式.工厂模式 ②结构型设计模式,例如装饰者模式.适配器模式 ③行为型设计模式, ...
- javascript设计模式--单例模式
什么是单例模式 单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例作为一个 ...
- JavaScript设计模式 单例模式
单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 先看一下,在Js中使用传统面向对象的单例模式. 面向对象的单例模式,是通过new关键字来实例化我们想要的对象,并将其赋值给in ...
- javascript设计模式-单例模式(singleton pattern)
为什么80%的码农都做不了架构师?>>> 最简单的单例模式 var mySingleton = {property1: "something",proper ...
- JavaScript设计模式——单例模式
单例模式 单例模式顾名思义就是只生成一个实例对象的一种模式.无论调用多少次都只返回相同的实例. 当我们单击登录按钮的时候,页面中会出现一个登录浮窗,而这个登录浮窗是唯一的,无论单击多少次登录按钮,这个 ...
- JavaScript 设计模式核⼼原理与应⽤实践之单例模式——Vuex的数据管理哲学
JavaScript 设计模式核⼼原理与应⽤实践之单例模式--Vuex的数据管理哲学 保证一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式就叫做单例模式. 单例模式的实现思路 思考这样一个 ...
- Javascript设计模式之单例模式
前言:菜鸡也有梦想,而我的梦想就是进一个真正的互联网大厂.以前学习的时候没有系统的整理,从今天开始要保持每周写博客的习惯,希望自己可以有所成长.为了培养编程思维,决定从设计模式开始写起.我是通过读&l ...
- JavaScript设计模式与开发实践系列之单例模式
本系列为<JavaScript设计模式与开发实践>(作者:曾探)学习总结,如想深入了解,请支持作者原版 单例模式 实现单例模式 单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的 ...
- JavaScript设计模式与开发实践 - 单例模式
引言 本文摘自<JavaScript设计模式与开发实践> 在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返 ...
最新文章
- 哈佛牙学院博士后:教你口腔保健基本功之刷牙篇
- Linux+db2+was部署问题总结
- 每日程序C语言43-链表原地逆置
- 字符串操作以及打印 —— 实现上传下载的进度条功能
- n元n次方程求解c 语言,解n元一次方程
- python 类和对象 经常用吗_python基础教程之对象和类的实际运用
- 如何用好埋点中的数据
- 【剑指 offer】(二十九)—— 数组中出现次数超过一半的数字(及该数字出现的次数)
- x.view(-1,4)
- 2020年下半年软件设计师上午真题及答案解析(个人见解+网络解答+持续更新)
- Excel单元格设灰色及锁定
- Git- 报错 error: bad signature 0x00000000 fatal: index file corrupt
- windows系统下scheme语言编程环境的搭建
- 京东云php环境配置,玩转京东云主机之④-利用宝塔软件搭建服务器PHP环境
- 在 Mac 上多开微信,还能看到朋友撤回的信息:WeChatTweak - 少数派
- 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[文件系统]
- 西瓜视频地址分析下载(2020-10-29)
- 安装ie9提示未能完成安装_win7系统安装Ie提示“Internet explorer未能完成安装”的解决方法...
- 语音信号a率压缩算法c语言,基于OMAP5912平台的语音压缩算法实现
- sqlconnection mysql_VS连接数据库的通用方法(SQL/MySql)