我是JS的初学者,试图了解单身人士是如何工作的,在阅读了很多单身人士模式后,我得出结论,以下单身人士模式可行,
var singletonIns = (function() {
var instance;
function init() {
var _pvtVar = 123;
var pubVar = 111;
var logPvt = function() {
console.log(_pvtVar);
};
return {
pubVar : pubVar,
logPvt : logPvt
};
}
return {
getInstance : function() {
if (!instance) {
instance = init();
} else {
return instance;
}
}
};
})();

它不会在运行时抛出任何错误。
但是,当我运行此代码var abc = singletonIns.getInstance()
时,它会返回undefined
,我们无法访问abc.pubVar
,为什么会这样?
请像我一样解释哟。
提前致谢。
答案 0 :(得分:2)
if (!instance) {
instance = init();
......然后是什么?那你就什么都不回。之后添加return instance;
,你会没事的。
你启动它时会返回实例,但是如果它不是你只是分配它而不是返回。
答案 1 :(得分:1)
var singletonIns = (function() {
var instance;
function init() {
var _pvtVar = 123;
var pubVar = 111;
var logPvt = function() {
console.log(_pvtVar);
};
return {
pubVar : pubVar,
logPvt : logPvt
};
}
return {
getInstance : function() {
if (typeof instance == 'undefined') {
instance = init();
return instance;
console.log(instance);
} else {
return instance;
}
}
};
})();
console.log(singletonIns.getInstance());