任意の値を1つのキャッチでJavaScriptオブジェクトのプロパティとして使用できます。前述[ToString]
のように、値に対して呼び出されてプロパティ名1を取得します。
したがって、オブジェクトリテラル{1: "hi"}
は。と同等{"1": "hi"}
です。
現在、許可されているObject Initialiser構文は{PropertyName: AssignmentExpression, ..}
、PropertyNameがIdentifierName()、StringLiteral()、またはNumericLiteral( )のみである場合です。他の値は引き続きキーとして使用できます。オブジェクト初期化構文を使用して宣言されていないだけです。x
"1"
1
無効なリテラルの例、および通常のプロパティ割り当てを使用してそれを書き換える方法:
x = {/regex/: "y"}; // invalid - only Name/String/Number allowed
x = {}; x[/regex/] = "y"; // "okay" - but very suspect!
そうは言っても、配列を扱う場合を除いて、「整数プロパティ」を使用したことがあるとは言えません。これは、疑わしい場合でも、間違いではありません。
1これはプロパティアクセス(例)に適用されますが、IdentifierNamesは式として扱われないobj[x] = y
ため、オブジェクト初期化子には直接適用されません。ただし、すべてのプロパティ名が文字列であるという最終結果は引き続き適用されます。