[解決済み] 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
関連
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトにキーと値のペアを追加するにはどうすればよいですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
Vueの要素ツリーコントロールに破線を追加する説明
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ