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 相关文章推荐
IE8 中使用加速器(Activities)
May 14 Javascript
js中apply方法的使用详细解析
Nov 04 Javascript
JS增加行复制行删除行的实现代码
Nov 09 Javascript
js日期联动示例
May 02 Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
Aug 06 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
Node.js  事件循环详解及实例
Aug 06 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 Javascript
element-ui 关于获取select 的label值方法
Aug 24 Javascript
vue click.stop阻止点击事件继续传播的方法
Sep 04 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 jQuery
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调用google接口生成二维码示例
2014/04/28 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
载入进度条 效果
2006/07/08 Javascript
slice函数的用法 之不错的应用
2006/12/29 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
JQuery球队选择实例
2015/05/18 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
python之pandas用法大全
2018/03/13 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
详解Python中is和==的区别
2019/03/21 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
Python阶乘求和的代码详解
2020/02/14 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
英国行业制服供应商:Alexandra
2019/09/14 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
用C语言实现文件读写操作
2013/10/27 面试题
入团者的自我评价分享
2013/12/02 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
法定代表人授权委托书
2014/04/04 职场文书
学生会任命书范本
2015/09/21 职场文书