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 相关文章推荐
如何在一个页面显示多个百度地图
Apr 07 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
Jun 14 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
prototype.js常用函数详解
Jun 18 Javascript
深入浅出ES6之let和const命令
Aug 25 Javascript
详解小程序不同页面之间通讯的解决方案
Nov 23 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
Dec 26 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
Sep 09 Javascript
微信小程序背景音乐开发详解
Dec 12 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 Javascript
JS代码简洁方式之函数方法详解
Jul 28 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
php分页思路以及在ZF中的使用
2012/05/30 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
javascript中的缓动效果实现程序
2012/12/29 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
python文字转语音实现过程解析
2019/11/12 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
AURALog面试题软件测试方面
2013/10/22 面试题
日语专业推荐信
2013/11/12 职场文书
室内设计专业学生的自我评价分享
2013/11/27 职场文书
工程业务员岗位职责
2013/12/31 职场文书
培训自我鉴定
2014/01/31 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
土地转让协议书
2014/04/15 职场文书
啦啦队口号大全
2014/06/16 职场文书
开展读书活动总结
2014/06/30 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
法定代表人免职证明
2015/06/24 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS