簡體   English   中英

Javascript單例類默認值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM