1

これの違いは何ですか

var person = {
    name: "Bob",
    age: "99"
};

この?

var person = {
    "name": "Bob",
    "age": "99"
};

それとも同じ意味ですか?もしそうなら、キーをオブジェクトにしたい場合はどうなりますか? name手段の場合、オブジェクトをキーとして指定するにはどうすればよい"name"ですか?

4

3 に答える 3

4

違いはありません。引用符は、文字列をプロパティ名として使用する場合にのみ必要ですが、その文字列は有効な識別子ではありません。さらに遠く、

オブジェクト プロパティ名は、任意の有効な JavaScript 文字列、または空の文字列を含む文字列に変換できる任意の名前にすることができます。ただし、有効な JavaScript 識別子ではないプロパティ名 (たとえば、スペースやダッシュを含むプロパティ名、または数字で始まるプロパティ名) には、角かっこ表記を使用してのみアクセスできます。

(ソース)

オブジェクトリテラルの構文については、MDN で詳しく説明されています。

于 2013-07-04T19:48:22.573 に答える
0

同じ意味です。有効なキーは、識別子、文字列リテラル、または数値リテラルです。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を参照してください

于 2013-07-04T20:36:06.073 に答える
0

この場合、それらは同等ですが、引用されたバージョンでは、有効な JS 識別子ではないキーを使用できます。たとえば、これは機能しません。

{ -test: 42 }

これは次のことを行います:

{ "-test": 42 }

オブジェクトをキーとして指定することはできません。

于 2013-07-04T19:48:16.017 に答える