我們常說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