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 相关文章推荐
网上抓的一个特效
May 11 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
jquery组件使用中遇到的问题整理及解决
Feb 21 Javascript
js实现div弹出层的方法
Nov 20 Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
js+html5实现手机九宫格密码解锁功能
Jul 30 Javascript
vue中如何去掉空格的方法实现
Nov 09 Javascript
JS 自执行函数原理及用法
Aug 05 Javascript
详解jQuery的核心函数和事件处理
Feb 18 jQuery
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实现的数字验证码及数字运算验证码
2015/07/30 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
基于python编写的微博应用
2014/10/17 Python
python实现将文本转换成语音的方法
2015/05/28 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
pandas带有重复索引操作方法
2018/06/08 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
PHP如何设置和取得Cookie值
2015/06/30 面试题
毕业生自我推荐
2013/11/04 职场文书
教育学习自我评价
2014/02/03 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
春季运动会开幕词
2015/01/28 职场文书
元宵节寄语大全
2015/02/27 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python