JavaScript中創(chuàng)建字典對象(dictionary)實(shí)例
對于JavaScript來說,其自身的Array對象僅僅是個數(shù)組,無法提供通過關(guān)鍵字來獲取保存的數(shù)據(jù),jQuery源碼中提供了一種非常好的方式來解決這個問題,先看一下源碼:
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)建一個編譯結(jié)果的緩存,代碼調(diào)用方式如下:
var codecache = createCache();
源碼中,keys用來保存鍵,而cache對象用來保存鍵值對,并通過全局變量Expr.cacheLength控制鍵的最大數(shù)量,若超過該數(shù)量,則自動刪除第一個鍵及鍵值對。
本代碼利用了閉包的結(jié)構(gòu),使外部代碼無法訪問到keys變量,這樣就能確保keys變量的安全性。當(dāng)然,由于JavaScript語句的特點(diǎn),外部代碼還是可以通過修改cache屬性使鍵與鍵值對不匹配。不過,只要不故意惡搞,這本身應(yīng)該也沒有太大的關(guān)系。
當(dāng)然,它也不能宣誓一個完善的dictionary對象,因?yàn)槠湮刺峁┲麈I重復(fù)的判斷等關(guān)鍵功能,有興趣的朋友們可以完善它。
相關(guān)文章
微信小程序與webview交互實(shí)現(xiàn)支付功能
這篇文章主要介紹了微信小程序與webview交互實(shí)現(xiàn)支付功能,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用小程序具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06JavaScript實(shí)現(xiàn)三級聯(lián)動菜單實(shí)例代碼
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)三級聯(lián)動菜單實(shí)例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06對javascript的一點(diǎn)點(diǎn)認(rèn)識總結(jié)《javascript高級程序設(shè)計》讀書筆記
Javascript專為與網(wǎng)頁交互而設(shè)計的腳本語言,由下列三個部門構(gòu)造2011-11-11Webpack?模塊加載動態(tài)引入機(jī)制源碼示例解析
這篇文章主要為大家介紹了Webpack?模塊加載動態(tài)引入機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Bootstrap CSS組件之下拉菜單(dropdown)
這篇文章主要為大家詳細(xì)介紹了Bootstrap CSS組件之下拉菜單(dropdown),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12jquery中validate與form插件提交的方式小結(jié)
這篇文章主要介紹了jquery中validate與form插件提交的方式小結(jié),需要的朋友可以參考下2016-03-03