我有以下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');
// ]]>
答案 0 :(得分:2)
c1保存实例,如果键入c1.instance = 8,则在c1中声明一个名为instance的字段,其值为8。您的实施是正确的。
问候。