Cheesoの質問に対する正しい答えは、実装がドキュメントを上回ったということです。それはもはやキーとして文字列を必要とせず、文字列(つまり引用符で囲まれたもの)または(おそらく)変数名として使用できるあらゆるものである可能性がある何かです。 、または$で、文字、数字、および$と_のみが含まれます。
私が行ったのと同じ考えでこの質問にアクセスする次の人のために残りを簡素化したいと思いました。ここに肉があります:
変数名は、オブジェクトキーとして使用するとJSONで補間されません(Friedoに感謝します)
ブルトンは、「キー」の代わりに「識別子」を使用して、「識別子がたまたま予約語である場合、識別子ではなくその単語として解釈される」と書いている。これは本当かもしれませんが、私は問題なくそれを試しました:
var a = {do:1,long:2,super:3,abstract:4,var:5,break:6,boolean:7};
a.break
=> 6
引用符の使用について、クエンティンは「...しかし、[キー]に特定の文字(またはキーワードになる文字の組み合わせ)が含まれていない限り、必要はありません」と書いています。
@記号を使用して、前の部分(特定の文字)が正しいことを発見しました(実際、$と_だけがエラーを引き起こさない文字だと思います)。
var a = {a@b:1};
=>構文エラー
var a = {"a@b":1};
a['a@b']
=> 1
しかし、上記で示したように、キーワードに関する括弧は正しくありません。
冒頭の{とコロンの間、または後続のプロパティのカンマとコロンの間のテキストが、引用符で囲まれていない文字列として使用され、オブジェクトキーを作成するか、Friedoが言うように、そこに変数名がないため、 t補間されます:
var uid = getUID();
var token = getToken(); // Returns ABC123
var data = {uid:uid,token:token};
data.token
=> ABC123