js以对象为索引的关联数组


Posted in Javascript onJuly 04, 2010

关于JSON对象,你可以参看wikipedia(http://zh.wikipedia.org/zh-cn/JSON),还有官方网站(http://www.json.org/json-zh.html)。

我们常说JavaScript原生支持json,因为我们可以认为json就是对JavaScript的Object对象的灵活应用。

通常我们使用json的方式,主要用作前后台数据交换的格式:

而在代码逻辑中更多的是用关联数组的方式。但即使是这样我们也很少使用对象类型作为键值对的键名。

var a= {}, b= [];

a[b] = new Date(); //通过a[b]可以取得时间值。

键名的类型可以是对象,多么美好的一件事啊!

 

不过有一个问题。如果你想这么用,需要有一个条件:数据必须是动态添加的。(目前在同学这,没有条件测试其他的浏览器,目前测试了IE8以及搜狗浏览器的IE内核和weikit内核)

测试代码如下:

var d = document.getElementById("hello"), obj = [1,2,3], a = {obj:"test"}; 
a[d] = "DOMElement"; 
alert(a[obj]); //undefined 
alert(a[d]);//DOMElement 
alert(a[document.getElementById("hello")]); //DOMElement 
a[obj] = "Array Object"; 
alert(a[obj]);
//Array Object

其实键名都是字符串:

var d = document.getElementById("hello"), obj = [1,2,3], a = {obj:"test"}; 
alert(a["obj"]); //test var str = new String("1,2,3"); 
a[obj] = "Array Object"; 
alert(a[obj]); //Array Object 
alert(a[str]); //Array Object 
var Class1 = function(_val){ 
var val = _val; 
this.toString = function(){ 
return val; 
} 
} 
var obj2 = new Class1("1,2,3"); 
alert(a[obj2]);//Array Object
Javascript 相关文章推荐
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
一个XML格式数据转换为图表的例子
Feb 09 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
Mar 15 Javascript
jquery 操作DOM的基本用法分享
Apr 05 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
Jun 23 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 Javascript
本地存储localStorage用法详解
Jul 31 Javascript
基于vue.js中事件修饰符.self的用法(详解)
Feb 23 Javascript
vue中实现图片和文件上传的示例代码
Mar 16 Javascript
Angular中使用better-scroll插件的方法
Mar 27 Javascript
原生JavaScript实现滑动拖动验证的示例代码
Dec 06 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 Javascript
JavaScript对象链式操作代码(jquery)
Jul 04 #Javascript
添加JavaScript重载函数的辅助方法2
Jul 04 #Javascript
为JavaScript添加重载函数的辅助方法
Jul 04 #Javascript
location.href语句与火狐不兼容的问题
Jul 04 #Javascript
JQuery从头学起第二讲
Jul 04 #Javascript
JQuery从头学起第一讲
Jul 04 #Javascript
js弹窗代码 可以指定弹出间隔
Jul 03 #Javascript
You might like
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
php简单截取字符串代码示例
2016/10/19 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
python opencv实现证件照换底功能
2019/08/19 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
高三英语教学反思
2014/01/13 职场文书
情侣吵架检讨书
2014/02/05 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
工作自我评价范文
2015/03/05 职场文书
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB