//单例的职责 var getSingle = function(fn){ var result; return function(){ return result || (result = fn.apply(this,arguments)); } } //创建具体方法的职责 var createLoginLayer = function(){ var div = cocument.createElement('div'); div.innerHTML = '啊啊啊啊啊'; div.style.display = 'none; document.body.addChild(div); return div; };
//调用单例模式创建对象 var createSingleLogin = getSingle(createLoginLayer); document.getElementById('button').onclick = function(){ var loginLayer = createSingleLogin(); loginLayer.style.display = 'block';
}
ES5 ↑
ES6↓
class Singleton { constructor(name) { this.name = name; this.instance = null; } // 通过静态方法来创建单例 static getInstance(name) { //往Singleton中添加一个判断用的属性instance if(!this.instance) { this.instance = new Singleton(name); } //没有则执行上面代码,有就直接返回 return this.instance; } } //通过静态方法创建的实例对象永远相等且只有一个