js 模式设计之单例
来源:互联网 发布:pc短信群发软件 编辑:程序博客网 时间:2024/06/09 20:05
Javascript中单例模式的实现方式有多种,每一种都有自身的优点或缺点。
1,对象直接量实现最基本,最简单的单体
var Singleton = {
attr1 : 1,
attr2 : 'hello',
method1 : function(){alert(this.attr2);},
method2 : function(arg){}
}
这种方式中,对象所有成员都通过Singleton加点号访问。所有成员是公开的,没有私有的。在执行到变量Singleton时,会加载(实例化)自身,即非惰性加载。
此外method1用this访问单体的其它成员会存在一些风险,因为method1的上下文不是总是指向Singleton对象。
比如当把method1作为事件监听器时,this可能指向的是dom元素,这时可能会提示undefined。
2,闭包实现私有成员的单体
var Singleton = function(){
var attr = 1, fn = function(){};
return {
method : function(){ fn(); },
getAttr : function(){ return attr; }
};
}();
这种方式中var定义私有的成员属性attr,方法fn,然后返回一个公开的接口method和getAttr。今后修改实现时,接口方法method和getAttr不变,只需修改私有的attr和fn的具体实现。使用如下:
Singleton.method();
Singleton.getAttr();
3,闭包实现私有成员的惰性实例化单体
var LazySingleton = function(){
var attr = 1, fn = function(){};
var obj = {
method : function(){ fn(); },
getAttr : function(){ return attr; }
};
function init(){
return obj;
}
return {getInstace: init};
}();
适用场合上面已经提到:对于那些必须加载大量数据的单体直到需要使用它的时候才实例化。使用方式是这样:
LazySingleton.getInstance().method();
LazySingleton.getInstance().getAttr();转自:http://kb.cnblogs.com/page/97011/
- JS 设计模式之 单例模式
- JS设计模式之单例模式
- JS设计模式之单例模式
- JS 设计模式之单例模式
- JS设计模式之单例模式
- js 模式设计之单例
- js设计模式之单例
- JS设计模式之单例模式篇
- 设计模式--js单例
- JS设计模式一:单例模式
- JS设计模式-单例模式
- js学习设计模式--单例模式
- JS 设计模式单例模式
- js设计模式demo--单例模式
- JS设计模式一:单例模式
- JS设计模式-单例模式
- JS设计模式-单例模式
- js设计模式—单例模式
- Textbox控件插入换行符的问题
- HDU--1198Farm Irrigation
- 图的存储与遍历
- Linux学习笔记(十三)
- Js 知识总结
- js 模式设计之单例
- js数组操作
- 写个servlet,用来导数据到word的,结果在ie8的情况下闪退了,在ie9情况下不会,郁闷啊
- Android中用MediaRecorder实现录音
- Java 线程的基本概念(模仿生产者与消费者的问题)
- 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
- 通过xml布局文件实现按钮改变焦点设置背景图片
- 作为软件工程师,你必须知道的20个常识
- OGRE学习心得——安装