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 权威指南(第四版) 读书笔记
Aug 11 Javascript
JavaScript CSS 修改学习第四章 透明度设置
Feb 19 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
Aug 01 Javascript
关于JavaScript的变量的数据类型的判断方法
Aug 14 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
Sep 05 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
关于单文件组件.vue的使用
Sep 20 Javascript
理解JavaScript中的对象
Aug 25 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+DBM的同学录程序(3)
2006/10/09 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
js的2种继承方式详解
2014/03/04 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
javascript面向对象快速入门实例
2015/01/13 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
原生js实现验证码功能
2017/03/16 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
详解vue-cli 脚手架 安装
2019/04/16 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
连接Python程序与MySQL的教程
2015/04/29 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
劳资专员岗位职责
2013/12/27 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
庆元旦活动总结
2014/07/09 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
python实现网络五子棋
2021/04/11 Python