单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点
时刻记住单一职责原则 , 把创建对象和管理单例分离。
//管理单例
var getSingle = function(fn){
var result;
return function(){
return result || (result = fn.apply(this,arguments));
}
}
//创建对象
var createLoginLayer = function(){
var div = document.createElement('div');
div.id='loginLayer';
div.innerHTML = '我是登录窗口<a id="close" href="#">x</a>';
div.style.display = 'none';
document.body.appendChild(div);
return div;
};
var createSingleLoginLayer = getSingle(createLoginLayer);
document.getElementById('loginBtn').onclick = function(){
var loginLayer = createSingleLoginLayer();
loginLayer.style.display = 'block';
document.getElementById('close').onclick=function(){
var loginLayer = createSingleLoginLayer();
loginLayer.style.display = 'none';
}
};