单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点
JavaScript中单例模式中常见应用:
- 定义命名空间
- 创建代码库
- 创建静态变量
- 惰性单例
命名空间
适当的使用命名空间,并不会杜绝全局变量,但可以减少全局变量的数量
var nameSpace = {
g: function(id){
return document.getElementById(id);
},
css: function(id,key,value){
this.g(id).style[key] = value;
}
}
静态变量
var Conf = (function(){
// 私有变量
var conf = {
COUNT: 1000,
MAX_NUM: 10000,
MIN_NUM: 1,
}
return {
get: function(key){
return conf[name]?name[name]:null;
}
}
})()
// 使用变量
var count = Conf.get('COUNT');
惰性单例
惰性单例指的是在需要的时候才创建对象实例。比如登陆窗口
通用的惰性单例
var getSingle = function(fn){
var result;
return function(){
return result || (result = fn.apply(this,arguments));
}
}
var createLogin = function(){
var div = document.createElement('div');
div.innerHTML = '我是登陆窗口';
div.style.display = 'none';
document.body.appendChild(div);
return div;
}
var createSingleLoign = getSingle(createLogin);