JavaScript 设计模式学习 Singleton


Posted in Javascript onJuly 27, 2009
/* Basic Singleton. */ 
var Singleton = { 
attribute1: true, 
attribute2: 10, 
method1: function() { 
}, 
method2: function(arg) { 
} 
}; 
单件模式最主要的用途之一就是命名空间: 
/* GiantCorp namespace. */ 
var GiantCorp = {}; 
GiantCorp.Common = { 
// A singleton with common methods used by all objects and modules. 
}; 
GiantCorp.ErrorCodes = { 
// An object literal used to store data. 
}; 
GiantCorp.PageHandler = { 
// A singleton with page specific methods and attributes. 
}; 
利用闭包在单件模式中实现私有方法和私有变量: 
GiantCorp.DataParser = (function() { 
// Private attributes. 
var whitespaceRegex = /\s+/; 
// Private methods. 
function stripWhitespace(str) { 
return str.replace(whitespaceRegex, ''); 
} 
function stringSplit(str, delimiter) { 
return str.split(delimiter); 
} 
// Everything returned in the object literal is public, but can access the 
// members in the closure created above. 
return { 
// Public method. 
stringToArray: function(str, delimiter, stripWS) { 
if(stripWS) { 
str = stripWhitespace(str); 
} 
var outputArray = stringSplit(str, delimiter); 
return outputArray; 
} 
}; 
})(); // Invoke the function and assign the returned object literal to 
// GiantCorp.DataParser. 
实现Lazy Instantiation 单件模式: 
MyNamespace.Singleton = (function() { 
var uniqueInstance; // Private attribute that holds the single instance. 
function constructor() { // All of the normal singleton code goes here. 
... 
} 
return { 
getInstance: function() { 
if(!uniqueInstance) { // Instantiate only if the instance doesn't exist. 
uniqueInstance = constructor(); 
} 
return uniqueInstance; 
} 
} 
})(); 
MyNamespace.Singleton.getInstance().publicMethod1();
Javascript 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题分析
Aug 12 Javascript
函数式 JavaScript(一)简介
Jul 07 Javascript
JS继承用法实例分析
Feb 05 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
Angular路由简单学习
Dec 26 Javascript
Vue分页组件实例代码
Apr 17 Javascript
AngularJS获取json数据的方法详解
May 27 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 07 Javascript
javascript-hashchange事件和历史状态管理实例分析
Apr 18 Javascript
八种Vue组件间通讯方式合集(推荐)
Aug 18 Javascript
xml 封装与解析(javascript和C#中)
Jul 26 #Javascript
JavaScript 捕获窗口关闭事件
Jul 26 #Javascript
jquery tools之tooltip
Jul 25 #Javascript
jquery tools之tabs 选项卡/页签
Jul 25 #Javascript
jquery JSON的解析方式
Jul 25 #Javascript
jqPlot Option配置对象详解
Jul 25 #Javascript
jqPlot jquery的页面图表绘制工具
Jul 25 #Javascript
You might like
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
手机端转换rem适应
2017/04/01 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
学习python可以干什么
2019/02/26 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
如何使用python切换hosts文件
2020/04/29 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
详解Python 循环嵌套
2020/07/09 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
超市促销活动方案
2014/03/05 职场文书
就业协议书范本
2014/04/11 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书