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监听div内容的变化具体实现思路
Nov 04 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
Dec 17 Javascript
jquery自适应布局的简单实例
May 28 Javascript
javascript事件冒泡简单示例
Jun 20 Javascript
总结Node.js中的一些错误类型
Aug 15 Javascript
详解js中Json的语法与格式
Nov 22 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
JavaScript正则表达式和级联效果
Sep 14 Javascript
小程序使用分包的示例代码
Mar 23 Javascript
JS typeof fn === 'function' && fn()详解
Aug 22 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
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php通用防注入程序 推荐
2011/02/26 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
python实现简易动态时钟
2018/11/19 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
python import 上级目录的导入
2020/11/03 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
老公爱的承诺书
2014/03/31 职场文书
个人委托书怎么写
2014/04/04 职场文书
计算机毕业生求职信
2014/06/10 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
投诉信回复范文
2015/07/03 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL