单例模式可以说是js中最常用的设计模式了,主要用来进行模块的管理,提供一个命名空间,以减少全局变量的定义,避免产生变量冲突。例如在团队项目开发的时候,我们可以为自己的代码定义一个命名空间:
var Tom = {
eat: function(){
},
run: function(){
},
sleep: function(){
}
}
除此之外单例模式还常常被用来定义常量:
var CONF = (function(){
var conf = {
MAX_NUM: 100,
MIN_NUM: 1,
COUNT: 1000
}
return {
//获取常量
get: function(name){
return conf[name] ? conf[name] : null;
}
}
})();
有时候单例对象需要延迟创建,并保证只实例化一次对象类:
var LazySingle = (function () {
//单例实例引用
var _instance = null;
//单例
function Single() {
return {
publicMethod: function () { },
publicProperty: '1.0'
}
}
return function () {
//如果未创建那么创建单例并返回,如果已经创建了那么直接返回
if (!_instance) {
return Single();
} else {
return _instance;
}
}
})()