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代码加载优化方法
Jan 30 Javascript
JavaScript按位运算符的应用简析
Feb 04 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
JavaScript观察者模式(经典)
Dec 09 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
JSON字符串和JSON对象相互转化实例详解
Jan 05 Javascript
weex slider实现滑动底部导航功能
Aug 28 Javascript
Angular 数据请求的实现方法
May 07 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 Javascript
Vue实现移动端拖拽交换位置
Jul 29 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面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python与R语言的简要对比
2017/11/14 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
Python如何在DataFrame增加数值
2020/02/14 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
零基础小白多久能学会python
2020/06/22 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
美国眼镜网:GlassesUSA
2017/09/07 全球购物
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
优秀老师事迹材料
2014/02/05 职场文书
综合内勤岗位职责
2014/04/14 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书