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 typeof 用法
Dec 28 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
Feb 26 Javascript
JQuery 图片的展开和伸缩实例讲解
Apr 18 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
Dec 17 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
Vuex 进阶之模块化组织详解
Jan 12 Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
js笔试题-接收get请求参数
Jun 15 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
php通过各种函数判断0和空
2020/07/04 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python 读取修改pcap包的例子
2019/07/23 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
元旦获奖感言
2014/03/08 职场文书
节能环保演讲稿
2014/08/28 职场文书
单位介绍信格式
2015/01/31 职场文书
大四学生个人总结
2015/02/15 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书