本文探讨 JavaScript 中将对象作为关联数组键名的用法。JSON 常被视为 Object 的灵活应用,用于前后台数据交换。在代码逻辑中,虽然较少直接使用对象作为键名,但通过动态添加数据的方式,可以实现以对象为索引的关联数组效果,例如在 IE8 及特定内核浏览器中验证了 DOMElement 和数组对象作为键的可行性。
JSON 与对象的基础认知
关于 JSON 对象,您可以参考维基百科(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
a[obj] = "Array Object";
alert(a[obj]); //Array Object