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 相关文章推荐
jQuery+.net实现浏览更多内容(改编php版本)
Mar 28 Javascript
javascript中如何处理引号编码"
Aug 15 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
Oct 28 Javascript
jQuery实现图片文字淡入淡出效果
Dec 21 Javascript
原生js的数组除重复简单实例
May 24 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
Dec 26 Javascript
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
JS实现图片转换成base64的各种应用场景实例分析
Jun 22 Javascript
使用React手写一个对话框或模态框的方法示例
Apr 25 Javascript
ES6 Generator基本使用方法示例
Jun 06 Javascript
vue.js实现照片放大功能
Jun 23 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数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
js获取内联样式的方法
2015/01/27 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
python tkinter组件摆放方式详解
2019/09/16 Python
Python之指数与E记法的区别详解
2019/11/21 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
保险公司客户经理岗位职责
2015/04/09 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
Vue如何清空对象
2022/03/03 Vue.js
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
python神经网络 使用Keras构建RNN训练
2022/05/04 Python