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 相关文章推荐
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
jQuery中contents()方法用法实例
Jan 08 Javascript
浅谈JavaScript中的对象及Promise对象的实现
Nov 15 Javascript
jQuery通过deferred对象管理ajax异步
May 20 Javascript
jQuery实现表格元素动态创建功能
Jan 09 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
JavaScript 中使用 Generator的方法
Dec 29 Javascript
vue文件树组件使用详解
Mar 29 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
Feb 01 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
Apr 29 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
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
基于mysql的bbs设计(三)
2006/10/09 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
OpenCV 边缘检测
2019/07/10 Python
Django REST framework内置路由用法
2019/07/26 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
考试违纪检讨书
2014/02/02 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
党委班子剖析材料
2014/08/21 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python