单例模式

var instance;

function singleton(){
  if (instance != null){
    return instance
  }

  this.name = 'Jim';
  this.age = 10;

  instance = this;
}

var a = new singleton();
var b = new singleton();
console.log(a === b);

上面这种方法可以实现单例模式,但是instance变成了全局属性,稍加改进,通过匿名函数形成闭包解决这个问题。

var singleton;
!function() {
    var instance;

    singleton = function() {
        if (instance != null) {
            return instance
        }

        this.name = 'Jim';
        this.age = 10;

        instance = this;
    }
}()

var a = new singleton();
var b = new singleton();
console.log(a === b);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容