JavaScript中建立字典對象(dictionary)執行個體,javascript經典執行個體

來源:互聯網
上載者:User

JavaScript中建立字典對象(dictionary)執行個體,javascript經典執行個體

對於JavaScript來說,其自身的Array對象僅僅是個數組,無法提供通過關鍵字來擷取儲存的資料,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;
}

上述源碼是建立一個編譯結果的緩衝,代碼調用方式如下:

複製代碼 代碼如下:
var codecache = createCache();

源碼中,keys用來儲存鍵,而cache對象用來儲存索引值對,並通過全域變數Expr.cacheLength修飾鍵的最大數量,若超過該數量,則自動刪除第一個鍵及索引值對。
本代碼利用了閉包的結構,使外部代碼無法訪問到keys變數,這樣就能確保keys變數的安全性。當然,由於JavaScript語句的特點,外部代碼還是可以通過修改cache屬性使鍵與索引值對不匹配。不過,只要不故意惡搞,這本身應該也沒有太大的關係。

當然,它也不能宣誓一個完善的dictionary對象,因為其未提供主鍵重複的判斷等關鍵功能,有興趣的朋友們可以完善它。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.