当前位置: 首页 > news >正文

JS设计模式(一)单例模式

注释很详细,直接上代码

本文建立在已有JS面向对象基础的前提下,若无,请移步以下博客先行了解

JS面向对象(一)类与对象写法

特点和用途:
  • 全局访问点:通过单例模式可以在整个应用程序中访问同一个对象实例,而不要每次使用时都创建新的对象。
  • 节省资源:特别是在需要频繁创建和销毁对象时,单例模式可以减少内存和资源占用。
  • 数据共享:由于单例模式只有一个实例,可以确保数据在各个部分共享使用。

单例模式在开发中广泛应用,例如管理全局状态、配置信息、日志记录器等场景,确保整个应用程序中某个类只有一个实例是非常有用的

源码:

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script>class LoginForm {constructor() {this.state = "hide";}show() {if (this.state === "show") {alert("已经显示");return;}this.state = "show";console.log("登录框显示成功");}hide() {if (this.state === "hide") {alert("已经隐藏");return;}this.state = "hide";console.log("登录框隐藏成功");}}LoginForm.getInstance = (function () {let instance; //因为是闭包,这个标识可以存储在函数内部,所以这里可以保证实例的唯一性return function () {if (!instance) {instance = new LoginForm();}return instance;};})();let obj1 = LoginForm.getInstance();obj1.show();let obj2 = LoginForm.getInstance();//两次获取的实例是同一个obj2.hide();console.log(obj1 === obj2);//这里演示一下闭包的应用//--------------------------------------------------/*function myTest() {let sum = 0;return function add(num) {sum += num;console.log(sum);};}let add = myTest();add(1);add(2);let add2 = myTest();add2(5);add2(6);*/</script>
</html>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • sudo: dnf:找不到命令
  • js-去重多种
  • PHP基础语法(五)
  • MSPM0GXX单片机内部比较器深度解析
  • 【word转pdf】【最新版本jar】Java使用aspose-words实现word文档转pdf
  • pytest实战技巧之参数化应用
  • 在Ubuntu 14.04上安装和使用Memcache的方法
  • 奇怪的Excel单元格字体颜色格式
  • 获取后端返回的图形验证码
  • 线上语音交友平台成熟案例源码出售本地找搭子交友app软件线下陪玩系统开发服务
  • WebStorm中在Terminal终端运行脚本时报错无法加载文件进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅
  • el-image预览图片点击遮盖处关闭预览
  • C++版OpenCV_03_图像增强
  • 筑牢数字防线:从微软蓝屏事件看网络安全与系统韧性建设
  • linux自动化构建工具--make/makefile
  • CentOS7 安装JDK
  • JavaScript标准库系列——Math对象和Date对象(二)
  • js操作时间(持续更新)
  • React-redux的原理以及使用
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 构造函数(constructor)与原型链(prototype)关系
  • 码农张的Bug人生 - 初来乍到
  • 前端自动化解决方案
  • 山寨一个 Promise
  • 设计模式(12)迭代器模式(讲解+应用)
  • 实现简单的正则表达式引擎
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​Python 3 新特性:类型注解
  • "无招胜有招"nbsp;史上最全的互…
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ###项目技术发展史
  • #define
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (PADS学习)第二章:原理图绘制 第一部分
  • (二)构建dubbo分布式平台-平台功能导图
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (学习日记)2024.01.09
  • (原創) 物件導向與老子思想 (OO)
  • (转)http协议
  • (转载)Google Chrome调试JS
  • .naturalWidth 和naturalHeight属性,
  • .net CHARTING图表控件下载地址
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)