前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JavaScript设计模式】-- 单例模式

【JavaScript设计模式】-- 单例模式

作者头像
meteoric
发布2018-11-15 14:29:12
3440
发布2018-11-15 14:29:12
举报
文章被收录于专栏:游戏杂谈游戏杂谈
代码语言:javascript
复制
<script type="text/javascript">
	var Singleton = function() {
		var _instance = null;
		
		return {
			getInstance : function() {
				if (!_instance) {
					_instance = ['a', 'b', 'c', 'd'];
				}

				return _instance;
			}
		}
	}();
	
	document.write(Singleton.getInstance());
</script>

保证只有一个实例对象,并且提供一个方法可让全局访问到此实例对象。

一些应用场景:

某些JavaScript的UI组件中,需要获取页面的DOM对象,只需要调用getInstance方法时返回该实例(调用时才判断是否已被初始化)的引用即可。

实际中的应用如一个Dialog框:alert型、confirm型、loading型、login型..,可能只在需要创建一次容器(为避免频繁对DOM树的修改引发DOM的reflow而导致的消耗系统资源或是产生内存泄露)

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>单例模式</title>
  <meta name="generator" content="editplus" />
  <meta name="author" content="meteoric_cry" />
  <meta name="keywords" content="" />
  <meta name="description" content="" />
  <meta http-equiv='content-type' content='text/html;charset=utf-8' />
  <style type='text/css'>
	.tip {
		background-color:#68af02;padding:5px 14px;color:#fff; font-size:14px;position:absolute;
	}
  </style>
 </head>

 <body>
  
<button onclick="Dialog.getInstance().update('111111');">显示框</button>&nbsp;&nbsp;
<button onclick="Dialog.getInstance().update('内容已被修改');">修改内容</button>

<script type="text/javascript">
	var Dialog = function() {
		var inner;
		
		var _instance = null;
	
		return inner = {
			getInstance : function() {
				if (!_instance) {
					_instance = document.createElement("div");
					_instance.className = "tip";
					document.body.appendChild(_instance);
				}

				return inner;
			},
			update : function(str) {
				_instance.innerHTML = str;
			}
		}
	}();
	
</script>

 </body>
</html>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010-09-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档