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 style 中visibility和display之间的区别
Jan 22 Javascript
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
微信开发 使用picker封装省市区三级联动模板
Oct 28 Javascript
JS实现拖拽的方法分析
Dec 20 Javascript
详解webpack 多入口配置
Jun 16 Javascript
判断滚动条滑到底部触发事件(实例讲解)
Nov 15 Javascript
解析vue路由异步组件和懒加载案例
Jun 08 Javascript
详解Angular如何正确的操作DOM
Jul 06 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
17道题让你彻底理解JS中的类型转换
Aug 08 Javascript
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
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
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
php 中英文语言转换类
2011/09/07 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
收集的10个免费的jQuery相册
2011/02/26 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
django定期执行任务(实例讲解)
2017/11/03 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
python三大神器之fabric使用教程
2019/06/10 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
python中的&&及||的实现示例
2019/08/07 Python
Python中断多重循环的思路总结
2019/10/04 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
农村婚礼证婚词
2014/01/10 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
求职毕业生自荐书
2014/02/08 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
航空学院求职信
2014/06/11 职场文书
工作时间证明
2015/06/15 职场文书
放飞理想主题班会
2015/08/14 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android