//单例的职责
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;
    }
}
//通过静态方法创建的实例对象永远相等且只有一个