В большинстве сериализаторов / десериализаторов 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
? *
Я только что видел это в Аяксиане , указывающем на запись в блоге Аарона Будмана :
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
в строку?