JavaScript中創(chuàng)建字典對象(dictionary)實(shí)例
對于JavaScript來說,其自身的Array對象僅僅是個(gè)數(shù)組,無法提供通過關(guān)鍵字來獲取保存的數(shù)據(jù),jQuery源碼中提供了一種非常好的方式來解決這個(gè)問題,先看一下源碼:
function createCache() {
var keys = [];
function cache(key, value) {
// Use (key + " ") to avoid collision with native prototype
// properties (see Issue #157)
if (keys.push(key += " ") > Expr.cacheLength) {
// Only keep the most recent entries
delete cache[keys.shift()];
}
return (cache[key] = value);
}
return cache;
}
上述源碼是創(chuàng)建一個(gè)編譯結(jié)果的緩存,代碼調(diào)用方式如下:
var codecache = createCache();
源碼中,keys用來保存鍵,而cache對象用來保存鍵值對,并通過全局變量Expr.cacheLength控制鍵的最大數(shù)量,若超過該數(shù)量,則自動刪除第一個(gè)鍵及鍵值對。
本代碼利用了閉包的結(jié)構(gòu),使外部代碼無法訪問到keys變量,這樣就能確保keys變量的安全性。當(dāng)然,由于JavaScript語句的特點(diǎn),外部代碼還是可以通過修改cache屬性使鍵與鍵值對不匹配。不過,只要不故意惡搞,這本身應(yīng)該也沒有太大的關(guān)系。
當(dāng)然,它也不能宣誓一個(gè)完善的dictionary對象,因?yàn)槠湮刺峁┲麈I重復(fù)的判斷等關(guān)鍵功能,有興趣的朋友們可以完善它。
相關(guān)文章
Javascript 浮點(diǎn)運(yùn)算的問題分析與解決方法
JavaScript 只有一種數(shù)字類型 Number ,而且在Javascript中所有的數(shù)字都是以IEEE-754標(biāo)準(zhǔn)格式表示的。 浮點(diǎn)數(shù)的精度問題不是JavaScript特有的,因?yàn)橛行┬?shù)以二進(jìn)制表示位數(shù)是無窮的2013-08-08
詳解ES6中的 Set Map 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)總結(jié)
這篇文章主要介紹了詳解ES6中的 Set Map 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
JavaScript黑洞數(shù)字之運(yùn)算路線查找算法(遞歸算法)實(shí)例
這篇文章主要介紹了JavaScript黑洞數(shù)字之運(yùn)算路線查找算法,涉及JavaScript遞歸操作算法相關(guān)技巧,需要的朋友可以參考下2016-01-01
JS實(shí)現(xiàn)將二維數(shù)組轉(zhuǎn)為json格式字符串操作示例
這篇文章主要介紹了JS實(shí)現(xiàn)將二維數(shù)組轉(zhuǎn)為json格式字符串操作,涉及javascript數(shù)組遍歷、拼接、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
javascript 實(shí)現(xiàn)滾動效果代碼整理
javascript 實(shí)現(xiàn)滾動效果代碼整理,需要的朋友可以參考下。2010-03-03

