2

有没有人看到以下用于创建单例的代码块有任何问题?

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

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

        return Singleton._instance;
    }
};
4

2 回答 2

1

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

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

mySingleton.some_method();

使用复杂的模式可能是矫枉过正。

于 2013-02-28T01:57:51.370 回答
1

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

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

  function getFoo() {
    return foo;
  }

  // expose public vars and methods
  return {
    getFoo: getFoo
  };
}());
于 2013-02-28T02:03:28.827 回答