【发布时间】:2010-10-18 03:21:58
【问题描述】:
在大多数 JSON 序列化器/反序列化器中,javascript 字典/哈希数组中的“键”部分写成字符串。
使用字符串作为键而不是只输入想要的名称有什么好处?
例如,假设我定义了两个对象k1 和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 的定义那样将键放在双引号(一个字符串)中,而不是像k1 的定义那样仅仅键入键名有什么意义呢?
我刚刚在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 ninja 会遵循将url、selected 和tabIndex 转换为字符串的约定?
【问题讨论】:
标签: javascript dictionary coding-style