Javascript - 想知道是否可以使用这个Singleton

时间:2013-12-31 13:40:31

标签: javascript design-patterns singleton

我有以下Singleton,我认为它几乎是防弹的。除了我可以写

  c1.instance = 8; 
  console.log(c1.instance);

下面的代码是否是单例模式的错误实现?

      // <![CDATA[ 
        var Singleton = (function(){
           function Singleton()
           {
              this.username = 'foo1';
              this.password = 'foo2';
           }
           var instance;
           return {
             getInstance: function()
             {
                if(!instance)
                {
                   instance = new Singleton();
                   instance.constructor = null;
                }
                return instance;
             }
           };   
        })();
        var c1 = Singleton.getInstance();
        var c2 = Singleton.getInstance();
        console.assert(c1 === c2, 'The objects are not the same');
        // ]]>

1 个答案:

答案 0 :(得分:2)

c1保存实例,如果键入c1.instance = 8,则在c1中声明一个名为instance的字段,其值为8。您的实施是正确的。

问候。