一、單例模式1 (建構函式的靜態屬性儲存例項)
function universe()
this.start_time = 0;
this.bang = 'big';
universe.instance = this;
return this;
}//測試
var uni = new universe();
var uni2 = new universe();
uni === uni2 //結果為true;
缺點:instance 屬性是公開的,可以任意修改
二、單例模式2 (閉包--私有靜態成員儲存例項--重寫建構函式)
function universe();
}//測試
var uni = new universe();
var uni2 = new universe();
uni === uni2 //結果為true;
缺點:重寫建構函式會造成原型的改變,但返回的引用卻是舊建構函式物件的引用,導致丟失初始化後新增的擴充套件,因為沒有指向新建構函式物件的引用
改進: (讓例項引用指向新建構函式)
function universe();
//保留原型屬性\n
universe.prototype = this;
instance = new universe();
//重置構造函式指標
instance.constructor = universe;
//功能
this.start_time = 0;
this.bang = 'big';
}
三、單例模式3( 即時函式,模組模式,私有成員儲存例項)
var universe = (function()
instance = this;
//功能
this.start_time = 0;
this.bang = 'big';
}})()
個人推薦此種模式,如果需要擴充套件,則應自行提供擴充套件介面
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...
JavaScript設計模式之單例模式
js中的單例模式一般為 模組例項化後僅返回乙個唯一的物件。在es6有了類的概念之後,更加接近通常所說的單例 乙個類例項化後僅可以返回唯一的乙個例項。應用場景 頁面中的某個元件僅渲染一次。下面用 實現乙個最簡單的單例 惰性單例 es5實現方式 var singleton function return...