如何在我的单件类中设置默认值。我在我的类中有这个字典,其中变量名称“myVar”被赋值为3.但是,运行下面的代码不会返回值3,而是返回undefined。
init = function() {
var var1 = Singleton.myVar;
console.log(var1); // Returns undefined
var1 = 3;
console.log(var1);; // Returns 3
var var2 = Singleton.myVar;
console.log(var2); // Returns undefined
}
Singleton类:
var Singleton = (function(){
var instantiated;
function init (){
// all singleton code goes here
return {
myVar: 3,
publicWhatever:function(){
alert('whatever')
},
publicProperty:2
}
}
return {
getInstance :function(){
if (!instantiated){
instantiated = init();
}
return instantiated;
}
}
})()
答案 0 :(得分:2)
您需要使用getInstance
函数来获取单例实例:
var var1 = Singleton.getInstance().myVar;
请注意,您的工厂似乎过于复杂。我看到使用an IIFE(您可以定义其他私有字段或函数)的重点,但您可以使用IIFE并将单件工厂减少到
var Singleton = (function(){
return {
myVar: 3,
publicWhatever:function(){
alert('whatever')
},
publicProperty:2
}
})();
答案 1 :(得分:2)
为什么你的单身声明完全是一个功能?为什么不直接声明对象,如下所示:
var Singleton = {
myVar: 3,
publicWhatever:function(){
alert('whatever')
},
publicProperty:2
};
答案 2 :(得分:1)
为什么不这样做:
var Singleton = function() {
return {
...
myVar: 3,
...
}
})();
而不是在单身内部有另一层?