JavaScript 惰性實例化代碼

惰性實例化要解決的問題是:避免了在頁面中 JavaScript 初始化執行的時候就實例化類,若是在頁面中沒有使用這個實例化的對象,就會形成必定的內存浪費和性能消耗。若是將一些類的實例化推遲到須要使用它的時候纔去作,就能夠避免資源過早損耗,作到 「按需供應」。html

 

// 惰性實列化代碼以下
var myNamespace = function(){ var Configure = function(){ var privateName = "tugenhua"; var privateGetName = function(){ return privateName; }; var privateSetName = function(name) { privateName = name; }; // 返回單列對象
        return { setName: function(name) { privateSetName(name); }, getName: function(){ return privateGetName(); } } }; // 存儲Configure實列
    var instance; return { init: function(){ // 若是不存在實列,就建立單列實列
            if(!instance) { instance = Configure(); } // 建立Configure單列
            for(var key in instance) { if(instance.hasOwnProperty(key)) { this[key] = instance[key]; } } this.init = null; return this; } } }(); // 調用方式
myNamespace.init(); var name = myNamespace.getName(); console.log(name); // tugenhua

 

 

如上代碼是惰性化實列代碼:它包括一個單體 Configure 實列,直接返回 init 函數,先判斷該單體是否被實列化,若是沒有被實列化的話,則建立並執行實列化並返回該實列化,若是已經實列化了,則返回現有實列;執行完後,則銷燬 init 方法,只初始化一次函數

 

參考:理解惰性實列化性能

相關文章
相關標籤/搜索