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 相关文章推荐
jQuery Tips 为AJAX回调函数传递额外参数的方法
Dec 28 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
Sep 02 Javascript
JavaScript中判断整数的多种方法总结
Nov 08 Javascript
jQuery+html5实现div弹出层并遮罩背景
Apr 15 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
微信小程序开发经验总结(推荐)
Jan 11 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
Jul 15 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的开合式多级菜单程序
2006/10/09 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
实习生个人找工作的自我评价
2013/10/30 职场文书
自我评价优秀范文分享
2013/11/30 职场文书
高中生学习计划书
2014/09/15 职场文书
1000字打架检讨书
2014/11/03 职场文书
行政答辩状范文
2015/05/21 职场文书
肖申克救赎观后感
2015/06/02 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
关于python中模块和重载的问题
2021/11/02 Python
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python