單例模式的思想在於保證乙個特定類僅有乙個例項,意味著當第二次使用同乙個類建立新物件的時候,應該得到與第一次所建立物件完全相同的物件
例1.在閉包中實現–重寫建構函式
function
universe
() //保留原型屬性
universe.prototype = this;
//例項
instance = new universe();
//重置構造函式指標
instance.constructor = universe;
//所有功能
instance.start_time = 0;
instance.bang = "big";
return instance;
}
例2.將建構函式和例項包裝在即時函式中var universe;
(function
() instance = this;
//所有功能
this.start_time = 0;
this.bang = "big";
};}());
例3.使用**實現單例var creatediv = function
(html);
creatediv.prototype.init = function
()//**類--使用**來管理單例
var proxysingletoncreatediv = (function
() return instance;
}})();
var a = new proxysingletoncreatediv('sven1');
var b = new proxysingletoncreatediv('sven2');
alert(a == b);//true
例4 實踐–惰性單例 -使用的時候去建立(類似登入框功能)//惰性單例
var createloginlayer = (function
() return div;
}})();
document.getelementbyid('loginbtn').onclick = function
()
惰性單例優化-單一職責原則//惰性單例優化-將職責區分開
var getsingle = function
(fn)
}var createloginlayer = function
();var createsingleloginlayer = getsingle(createloginlayer);
document.getelementbyid('loginbtn').onclick = function
()
例5 實踐–ajax動態載入資料//應用於-ajax動態載入資料時,已繫結過的事件不再重複繫結,類似於jquery的one函式功能
var getsingle = function
(fn)
}var bindevent = getsingle(function
() return
true;
});var render = function
();render();
render();
render();
javascript設計模式 單例模式
一 單例模式1 建構函式的靜態屬性儲存例項 function universe this.start time 0 this.bang big universe.instance this return this 測試 var uni new universe var uni2 new univer...
javascript設計模式 單例模式
單例模式的概念是 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點 也就是說建立多個物件,每個變數實際引用的其實都是乙個物件,使用單例模式,可以節約記憶體提高程式的效能。常用單例模式寫法 var singleton function singleton.getinstance function...
設計模式學習 javascript 單例模式
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。var singleton function return return instance var s1 new singleton.getinstance var s2 new singleton.getinstance console.lo...