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开发包大全整理
Dec 22 Javascript
jquery学习笔记二 实现可编辑的表格
Apr 09 Javascript
基于JQuery实现的Select级联
Jan 27 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
Apr 04 Javascript
javascript里使用php代码实例
Dec 13 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
关于JavaScript的变量的数据类型的判断方法
Aug 14 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
Nov 28 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
Jul 19 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
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery实现折线图的方法
2015/02/28 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
require.js的用法详解
2015/10/20 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
空指针到底是什么
2012/08/07 面试题
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
保安的辞职报告怎么写
2014/01/20 职场文书
超市促销活动方案
2014/03/05 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
2014年教学工作总结
2014/11/13 职场文书
关于Vue中的options选项
2022/03/22 Vue.js