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

时间:2013-02-28 01:53:01

标签: javascript singleton

有没有人发现以下代码块有任何问题可以创建单例?

Singleton = {
    getInstance : function() {
        if (Singleton._instance)
            return Singleton._instance;

        Singleton._instance = new function() {
            //create object here
        };

        return Singleton._instance;
    }
};

2 个答案:

答案 0 :(得分:1)

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

var mySingleton = {
    some_variable: 10,
    some_method: function(x){
        console.log(this.some_variable * x);
    }
}

mySingleton.some_method();

使用复杂的模式可能有点过分。

答案 1 :(得分:1)

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

var singleton = (function singletonMod() {
  // private
  var foo = 'foo';

  function getFoo() {
    return foo;
  }

  // expose public vars and methods
  return {
    getFoo: getFoo
  };
}());