これの違いは何ですか
var person = {
name: "Bob",
age: "99"
};
この?
var person = {
"name": "Bob",
"age": "99"
};
それとも同じ意味ですか?もしそうなら、キーをオブジェクトにしたい場合はどうなりますか? name
手段の場合、オブジェクトをキーとして指定するにはどうすればよい"name"
ですか?
これの違いは何ですか
var person = {
name: "Bob",
age: "99"
};
この?
var person = {
"name": "Bob",
"age": "99"
};
それとも同じ意味ですか?もしそうなら、キーをオブジェクトにしたい場合はどうなりますか? name
手段の場合、オブジェクトをキーとして指定するにはどうすればよい"name"
ですか?
違いはありません。引用符は、文字列をプロパティ名として使用する場合にのみ必要ですが、その文字列は有効な識別子ではありません。さらに遠く、
オブジェクト プロパティ名は、任意の有効な JavaScript 文字列、または空の文字列を含む文字列に変換できる任意の名前にすることができます。ただし、有効な JavaScript 識別子ではないプロパティ名 (たとえば、スペースやダッシュを含むプロパティ名、または数字で始まるプロパティ名) には、角かっこ表記を使用してのみアクセスできます。
同じ意味です。有効なキーは、識別子、文字列リテラル、または数値リテラルです。http://ecma-international.org/ecma-262/5.1/#sec-11.1.5を参照
オブジェクト自体をキーとして使用することはまだできませんが、EcmaScript 6 で提案されている WeakMap オブジェクトはこれを解決します。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMapを参照してください
この場合、それらは同等ですが、引用されたバージョンでは、有効な JS 識別子ではないキーを使用できます。たとえば、これは機能しません。
{ -test: 42 }
これは次のことを行います:
{ "-test": 42 }
オブジェクトをキーとして指定することはできません。