单例模式的原则就是始终要保持在全局的一个实例,比如一个全局的弹窗的实现

基本实现:

var Singleton = function(name){
    this.name = name;
    this.instance = null;
};
Singleton.getInstance = function(name){
    if(!this.instance){
        this.instance = new Singleton(name);
    }
    return this.instance;
}

下面是更好的做法,遵循单一职责原则

function getInstance(fn){
    var result;
    return function(){
        return result || (result = fn.apply(this,arguments));//fn 记得要有返回值
    }
}

注意fn,要用apply将他的内部指针指回本身,因为到时候传进来的fn是个匿名函数,this自动指向window