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 面向对象编程 function也是类
Sep 17 Javascript
js修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
javascript实现可改变滚动方向的无缝滚动实例
Jun 17 Javascript
javascript验证上传文件的类型限制必须为某些格式
Nov 14 Javascript
js 显示base64编码的二进制流网页图片
Apr 04 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
js限制文本框只能输入中文的方法
Aug 11 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
Apr 14 jQuery
node.js利用mongoose获取mongodb数据的格式化问题详解
Oct 06 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
Oct 08 Javascript
js实现简单五子棋游戏
May 28 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日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
跟老齐学Python之编写类之二方法
2014/10/11 Python
python开发游戏的前期准备
2019/05/05 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
css3的transition属性详解
2014/12/15 HTML / CSS
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
英国办公用品商店:Office Outlet
2018/04/04 全球购物
小学语文业务学习材料
2014/06/02 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
假期安全教育广播稿
2014/10/04 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
Django drf请求模块源码解析
2021/06/08 Python