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 Uploadify多文件上传带进度条且传递自己的参数
Aug 28 Javascript
javascript常见用法总结
May 22 Javascript
JS实现根据用户输入分钟进行倒计时功能
Nov 14 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
Jul 10 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
Feb 21 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
详解JavaScript中精度失准问题及解决方法
Feb 04 Javascript
vue中keep-alive内置组件缓存的实例代码
Apr 16 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
Apr 26 Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 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源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
用Python实现KNN分类算法
2017/12/22 Python
Django实现组合搜索的方法示例
2018/01/23 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
自荐信格式简述
2014/01/25 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js