1. ホーム
  2. javascript

有効なjavascriptオブジェクトのプロパティ名

2023-09-23 10:54:17

質問

私は、javascriptオブジェクトのプロパティ名として何が有効であると考えられるかを調べようとしています。 例えば

var b = {}
b['-^colour'] = "blue";     // Works fine in Firefox, Chrome, Safari
b['colour'] = "green";      // Ditto
alert(b['-^colour']);       // Ditto
alert(b.colour);            // Ditto
for(prop in b) alert(prop); // Ditto
//alert(b.-^colour);     // Fails (expected)

これは ポスト は、有効なjavascriptの変数名を詳細に記述しており、'-^color'は明らかに(変数名として)有効ではありません。同じことが、オブジェクトのプロパティ名にも当てはまるのでしょうか?上記を見ると、私は以下のことを調べようとしています。

  1. b['-^colour'] は無効ですが、奇抜な方法ですべてのブラウザで動作し、今後動作することを信頼すべきではありません。

  2. b['-^colour'] は完全に有効ですが、この方法でしかアクセスできない形式です - (サポートされているので、オブジェクトはおそらくマップとして使用することができます?)

  3. 他の何か

余談ですが、javascriptのグローバル変数は、トップレベルで次のように宣言されるかもしれません。

var abc = 0;

で作成することもできますが、(私の理解では)

window['abc'] = 0;

を指定すると、上記のすべてのブラウザで動作します。

window['@£$%'] = "bling!";
alert(window['@£$%']);

これは有効でしょうか?変数の命名規則と矛盾しているように思えます。それとも、私はそこで変数を宣言していないのでしょうか? 変数とオブジェクトのプロパティ名の違いは何ですか?

どのように解決するのですか?

はい、オブジェクトはマップとして使用でき、任意の文字列をプロパティ名とすることができます。 あなたが発見したように、いくつかのプロパティは だけ でしかアクセスできないプロパティもあります。

window['abc']

はプロパティにアクセスしています。 と同じ値を(グローバルレベルで)参照していても、変数ではありません。

abc