在大多數JSON序列化器/反序列化器中,javascript字典/散列數組中的「鍵」部分被寫爲字符串。爲什麼JS hash/dict中的「key」部分應該是一個字符串?
使用字符串作爲鍵的好處是什麼,而不是僅僅輸入預期的名稱?
例如,假設我定義了兩個對象和k2
像這樣:
var k1 = { a: 1, b: 2, c: 3 }; // define name normally
var k2 = { "a": 1, "b": 2, "c": 3 }; // define name with a string
然後我跑了以下測試:
alert(k1 == k2); // false (of course)
alert(k1.a == k2.a); // true
alert(k1["b"] == k2["b"]); // true
alert(uneval(k1)); // returns the k1 object literal notation.
alert(uneval(k2)); // returns the same string as above line.
alert(uneval(k1) == uneval(k2)); // true
那麼什麼是具有關鍵是點如k2
那樣定義了雙引號(字符串),而不是像定義的那樣輸入密鑰名稱?
我剛纔看到在Ajaxian這種過度指着Aaron Boodman's blog entry:
chromium.tabs.createTab({
"url": "http://www.google.com/",
"selected": true,
"tabIndex": 3
});
因爲他也使用駱駝案例的tabIndex,我沒有看到任何一點在使用字符串在所有。
爲什麼不:
chromium.tabs.createTab({
url: "http://www.google.com/",
selected: true,
tabIndex: 3
});
爲什麼會JS忍者如下轉向url
,selected
和tabIndex
成一個字符串的約定?
沒有太多......但我*保持巨大的JavaScript應用程序在工作。我一直使用裸詞(例如創建類和類),它可以在所有主流瀏覽器中使用...... IE FF Opera Safari。 – chakrit 2009-04-07 18:40:29
JSON是JavaScript的子集。它需要引號,但JavaScript不會。 – 2009-04-08 13:25:02