Javascript 为什么我的单身汉不工作?

Javascript 为什么我的单身汉不工作?,javascript,singleton,ecmascript-5,Javascript,Singleton,Ecmascript 5,我是JS的初学者,试图了解singleton是如何工作的,在阅读了大量关于singleton模式的内容后,我得出结论,下面的singleton模式可以工作 var singletonIns=(函数(){ var实例; 函数init(){ var _pvtVar=123; var-pubVar=111; var logPvt=函数(){ 控制台日志(_pvtVar); }; 返回{ pubVar:pubVar, logPvt:logPvt }; } 返回{ getInstance:functio

我是JS的初学者,试图了解singleton是如何工作的,在阅读了大量关于singleton模式的内容后,我得出结论,下面的singleton模式可以工作

var singletonIns=(函数(){
var实例;
函数init(){
var _pvtVar=123;
var-pubVar=111;
var logPvt=函数(){
控制台日志(_pvtVar);
};
返回{
pubVar:pubVar,
logPvt:logPvt
};
}
返回{
getInstance:function(){
如果(!实例){
instance=init();
}否则{
返回实例;
}
}
};
})();
。。。然后呢?那你就什么都不退了。添加
返回实例然后你就没事了

当实例被启动时,您将返回该实例,但如果不是,您只需分配它而不返回

。。。然后呢?那你就什么都不退了。添加
返回实例然后你就没事了

在实例启动时返回实例,但如果不是,则只分配实例而不返回。

var singletonIns=(函数(){
var实例;
函数init(){
var _pvtVar=123;
var-pubVar=111;
var logPvt=函数(){
控制台日志(_pvtVar);
};
返回{
pubVar:pubVar,
logPvt:logPvt
};
}
返回{
getInstance:function(){
if(实例的类型==“未定义”){
instance=init();
返回实例;
console.log(实例);
}否则{
返回实例;
}
}
};
})();
log(singletonIns.getInstance())
var singletonIns=(函数(){
var实例;
函数init(){
var _pvtVar=123;
var-pubVar=111;
var logPvt=函数(){
控制台日志(_pvtVar);
};
返回{
pubVar:pubVar,
logPvt:logPvt
};
}
返回{
getInstance:function(){
if(实例的类型==“未定义”){
instance=init();
返回实例;
console.log(实例);
}否则{
返回实例;
}
}
};
})();

log(singletonIns.getInstance())第一次运行该函数时,它不会返回任何内容?我无法复制该错误。它似乎工作正常。第一次运行该函数时,它不会返回任何内容?我无法复制错误。它似乎工作得很好。哇,太棒了呵呵,他忘了这么做哇,太棒了呵呵,他忘了这么做。如果实例变量的类型未定义,则必须检查它的类型,然后调用init(),否则保持不变。。因此,您无法获得价值。。您可以访问该值,因为它是该函数的本地/私有范围,所以您不能在任何函数之外访问私有变量。。阅读JSF的scope文章如果未定义,则必须检查实例变量的类型,然后调用init(),否则与之相同。。因此,您无法获得价值。。您可以访问该值,因为它是该函数的本地/私有范围,所以您不能在任何函数之外访问私有变量。。阅读js的范围文章
if (!instance) {
    instance = init();