Javascript單例模式

2021-07-25 06:41:46 字數 1778 閱讀 1847

單例模式的思想在於保證乙個特定類僅有乙個例項,意味著當第二次使用同乙個類建立新物件的時候,應該得到與第一次所建立物件完全相同的物件

例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...