[英]Javascript singleton class default value
如何在單例類中設置默認值。 我在班級里有這本字典,其中為變量名“ 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
}
單例課程:
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;
}
}
})()
您需要使用getInstance
函數來獲取您的單例實例:
var var1 = Singleton.getInstance().myVar;
請注意,您的工廠似乎過於復雜。 我知道使用IIFE的意義 (您可以定義其他私有字段或函數),但是可以使用IIFE並將單例工廠減少為
var Singleton = (function(){
return {
myVar: 3,
publicWhatever:function(){
alert('whatever')
},
publicProperty:2
}
})();
為什么單例聲明根本是一個函數? 為什么不直接聲明對象,就像這樣:
var Singleton = {
myVar: 3,
publicWhatever:function(){
alert('whatever')
},
publicProperty:2
};
為什么不做:
var Singleton = function() {
return {
...
myVar: 3,
...
}
})();
而不是在單例內部有另一層?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.