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下的keyCode键码值表
Apr 10 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
Nov 25 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
Jan 20 Javascript
利用Node.js检测端口是否被占用的方法
Dec 07 Javascript
详解vue-cli 接口代理配置
Dec 13 Javascript
解析Angular 2+ 样式绑定方式
Jan 15 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
JS快速实现简单计算器
Apr 08 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
Dec 19 Vue.js
JavaScript流程控制(循环)
Dec 06 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
德生PL550的电路分析
2021/03/02 无线电
source.php查看源文件
2006/12/09 PHP
php 破解防盗链图片函数
2008/12/09 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
python中while循环语句用法简单实例
2015/05/07 Python
Python中有趣在__call__函数
2015/06/21 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Django中间件实现拦截器的方法
2018/06/01 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
C++的几个面试题附答案
2016/08/03 面试题
教育实践活动对照检查材料
2014/09/23 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书