用这种方式实现Javascript单例模式有什么问题吗?

Are there any problems implementing a Javascript singleton pattern this way?

本文关键字:什么 问题 单例模式 Javascript 方式 实现      更新时间:2023-09-26

有没有人看到下面创建单例的代码块有什么问题?

Singleton = {
    getInstance : function() {
        if (Singleton._instance)
            return Singleton._instance;
        Singleton._instance = new function() {
            //create object here
        };
        return Singleton._instance;
    }
};

在Javascript中,通常更简单的方法是使用对象字面量创建单例对象,并将其放在一个变量中,以便人们可以获取它。

var mySingleton = {
    some_variable: 10,
    some_method: function(x){
        console.log(this.some_variable * x);
    }
}
mySingleton.some_method();
使用复杂的模式可能是多余的。

另一个常见的单例模式是"模块模式",它允许你声明"私有"变量。

var singleton = (function singletonMod() {
  // private
  var foo = 'foo';
  function getFoo() {
    return foo;
  }
  // expose public vars and methods
  return {
    getFoo: getFoo
  };
}());