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 屏蔽一个区域内的所有元素,禁止输入
Oct 22 Javascript
js DOM 元素ID就是全局变量
Sep 20 Javascript
图片上传判断及预览脚本的效果实例
Aug 07 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
使用Angular-CLI构建NPM包的方法
Sep 07 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
Nov 14 Javascript
全面了解JavaScript的作用域链
Apr 03 Javascript
vue实现弹幕功能
Oct 25 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 Javascript
原生js实现照片墙效果
Oct 13 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 startup的解决方法
2013/05/07 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php强制运行广告的方法
2014/12/01 PHP
php实现计数器方法小结
2015/01/05 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
Javascript var变量隐式声明方法
2009/10/19 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
javascript工具库代码
2012/03/29 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
python Django批量导入不重复数据
2016/03/25 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
反四风对照检查材料
2014/09/22 职场文书
文明单位申报材料
2014/12/23 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL