JavaScript中创建字典对象(dictionary)实例


Posted in Javascript onMarch 31, 2015

对于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对象,因为其未提供主键重复的判断等关键功能,有兴趣的朋友们可以完善它。

Javascript 相关文章推荐
js 鼠标点击事件及其它捕获
Jun 04 Javascript
nullJavascript中创建对象的五种方法实例
May 07 Javascript
js常用自定义公共函数汇总
Jan 15 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
Feb 16 Javascript
clipboard.js在移动端复制失败的解决方法
Jun 13 Javascript
vue中如何让子组件修改父组件数据
Jun 14 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
8 个有用的JS技巧(推荐)
Jul 03 Javascript
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
jQuery Ajax调用WCF服务详细教程
Mar 31 #Javascript
JavaScript父子窗体间的调用方法
Mar 31 #Javascript
JavaScript操作cookie类实例
Mar 31 #Javascript
javascript实现简单的贪吃蛇游戏
Mar 31 #Javascript
javascript制作2048游戏
Mar 30 #Javascript
JavaScript模拟实现继承的方法
Mar 30 #Javascript
jQuery制作可自定义大小的拼图游戏
Mar 30 #Javascript
You might like
在PHP中执行系统外部命令
2006/10/09 PHP
PHP 一个随机字符串生成代码
2010/05/26 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
js选项卡的实现方法
2015/02/09 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
python多线程用法实例详解
2015/01/15 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
个人先进材料范文
2014/12/30 职场文书
公司的力量观后感
2015/06/05 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
详解MySQL的内连接和外连接
2023/05/08 MySQL