定義
單例模式的定義為: 保證一個(gè)類(lèi)僅有一個(gè)實(shí)例魁衙,并提供一個(gè)訪(fǎng)問(wèn)它的全局訪(fǎng)問(wèn)點(diǎn)羡忘; 其核心思想就是確保只有一個(gè)實(shí)例么鹤,并提供全局訪(fǎng)問(wèn)诀浪。
前端頁(yè)面中經(jīng)常遇到的登錄框就是一個(gè)單例棋返,它有且只有一個(gè)存在。如下面的程序:
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睛竣,它在全局只有一個(gè)的,也屬于一種單例(當(dāng)然這個(gè)單例是js語(yǔ)言設(shè)計(jì)的問(wèn)題)求摇。為了解決變量名污染問(wèn)題射沟,需用namespace來(lái)進(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";
單例模式是一種非常簡(jiǎn)單并且實(shí)用的模式殊者,在合適的適合創(chuàng)建對(duì)象,并且之創(chuàng)建唯一一個(gè)验夯。