定義
單例模式的定義為: 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點; 其核心思想就是確保只有一個實例,并提供全局訪問。
前端頁面中經(jīng)常遇到的登錄框就是一個單例,它有且只有一個存在。如下面的程序:
var createSingleLoginLayer = function(){
var loginDiv;
return funciton(){
if(!loginDiv){
loginDiv = "登錄框";
}
return loginDiv;
}
}
// 惰性單例
Singleton.getInstance = function(){
var instance = null;
return function( name ){
if(!instance){
instance = new Singleton(name);
}
return instance;
}
}
另外我們經(jīng)常遇到的全局變量,如:var aa=1,它在全局只有一個的,也屬于一種單例(當(dāng)然這個單例是js語言設(shè)計的問題)。為了解決變量名污染問題,需用namespace來進(jìn)行解決:
var _genPackage = function(_namespace){
if (!_namespace||!_namespace.length) return null;
var _package = window;
for(var a=_namespace.split('.'),
l=a.length,i=(a[0]=='window')?1:0;i<l;
_package=_package[a[i]]=_package[a[i]]||{},i++);
return _package;
};
// _genPackage("const").name = "ahu";
單例模式是一種非常簡單并且實用的模式,在合適的適合創(chuàng)建對象,并且之創(chuàng)建唯一一個。