1. ホーム
  2. javascript

[解決済み] JavaScriptのプロパティアクセス:ドット記法とブラケット?

2022-03-22 02:44:19

質問

最初の形式では、文字列リテラルだけでなく、変数を使用できるという明白な事実以外に、どちらかを使用する理由はあるのでしょうか、また、あるとすればどのような場合でしょうか?

コードでは

// Given:
var foo = {'bar': 'baz'};

// Then
var x = foo['bar'];

// vs. 
var x = foo.bar;

コンテキスト これらの式を生成するコードジェネレータを書いたが、どちらが好ましいか悩んでいる。

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

(ソースは こちら .)

角括弧表記ではドット表記で使用できない文字が使用できます。

<ブロッククオート
var foo = myForm.foo[]; // incorrect syntax
var foo = myForm["foo[]"]; // correct syntax

のように、非 ASCII (UTF-8) 文字を含む。 myForm["ダ"] ( その他の例 ).

次に、角括弧表記は 予測可能な方法で変化するプロパティ名。

<ブロッククオート
for (var i = 0; i < 10; i++) {
  someFunction(myForm["myControlNumber" + i]);
}

ラウンドアップ

  • ドット記法は、書くのが速く、読むのが明確です。
  • 角括弧表記は、以下のものを含むプロパティにアクセスすることができます。 特殊文字や選択 変数を使用したプロパティ

ドット記法で使えない文字のもう一つの例として プロパティ名自体にドットが含まれるもの .

例えば、json レスポンスには、以下のようなプロパティが含まれる可能性があります。 bar.Baz .

var foo = myResponse.bar.Baz; // incorrect syntax
var foo = myResponse["bar.Baz"]; // correct syntax