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 相关文章推荐
一个js封装的不错的选项卡效果代码
Feb 15 Javascript
告诉大家什么是JSON
Jun 10 Javascript
jQuery选中select控件 无法设置selected的解决方法
Sep 01 Javascript
jquery中prop()方法和attr()方法的区别浅析
Sep 06 Javascript
JS中typeof与instanceof之间的区别总结
Nov 14 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
用jquery仿做发微博功能示例
Apr 18 Javascript
node.js中的fs.symlink方法使用说明
Dec 15 Javascript
JS实现控制表格行文本对齐的方法
Mar 30 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
Vue之Watcher源码解析(1)
Jul 19 Javascript
Ajax获取node服务器数据的完整步骤
Sep 20 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中explode与split的区别介绍
2012/10/03 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
基于python编写的微博应用
2014/10/17 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
python内存动态分配过程详解
2019/07/15 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
英国综合网上购物商城:The Hut
2018/07/03 全球购物
求职简历的自我评价
2014/01/31 职场文书
竞选部门副经理的自荐书范文
2014/02/11 职场文书
销售经理岗位职责
2014/03/16 职场文书
保险公司早会主持词
2014/03/22 职场文书
农业生产宣传标语
2014/10/08 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
Python循环之while无限迭代
2022/04/30 Python