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 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 Javascript
判断window.onload是否多次使用的方法
Sep 21 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
Sep 14 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
原生js实现jquery函数animate()动画效果的简单实例
Aug 21 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
Nov 11 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
react-native之ART绘图方法详解
Aug 08 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
手把手带你入门微信小程序新框架Kbone的使用
Feb 25 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python set内置函数的具体使用
2019/07/02 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
python批量修改xml属性的实现方式
2020/03/05 Python
python为什么会环境变量设置不成功
2020/06/23 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
表达自我的市场:Society6
2018/08/01 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
临床医学大学生求职信
2013/09/28 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
学生犯错保证书
2015/05/09 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis