ほとんどのJSONシリアライザ/デシリアライザでは、JavaScriptの辞書/ハッシュ配列の「キー」部分が文字列として書き込まれます。JS hash/dictの「キー」部分が文字列であるのはなぜですか?
目的の名前を入力するのではなく、文字列をキーとして使用する利点は何ですか?例えば
、私はそうのような二つのオブジェクトと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
というように二重引用符(文字列)を定義しましたか?
私はちょうどAaron Boodman's blog entryを指すAjaxianでこれ以上のを見ました:
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の規約がJSONの多くで作業していることから流出したとします。 – chakrit
Pythonの互換性が引用の理由として言及されています。 – cobbal
@chakritはい。また、ギズモで指摘されているように、JavaScriptで引用符を使用することは、予約語を心配する必要がないため、一般的に安全です。たとえば{do: "something"}は法的JavaScriptではありません。 –