(i)動的選択方法と属性
実際の作業では、この状況に遭遇することがよくあります。特定の条件に応じて2つの方法[1]のいずれかを呼び出すか、2つの属性のいずれかで操作を読み書きします[2]。次のコードはこれを示しています:
コードコピーは次のとおりです。
if(条件){
myobj.method1(somearg);
} それ以外 {
myobj.method2(somearg);
}
JavaScriptは、正方形のブラケット演算子([])を使用してメソッドとプロパティを動的に選択するシンプルな構文を提供します。次のコードに示されているように、JavaScriptには2つの同等のメンバーアクセス構文があります(この機能は動的言語では一般的です):
obj [expressionResultinginmembername] == obj.membername
整数のサブスクリプトを使用して配列内の要素にアクセスした場合、四角いブラケット演算子を使用して動的なメンバーを選択し始めています。これは、Arrayオブジェクト自体に、Number subscriptにちなんで名付けられた属性(および長さの属性)が含まれているためです。ただし、JavaScriptでは、DOT演算子(。)を使用してこれらのプロパティに直接アクセスすることはできないため、MyArray.0は構文的に違法です(残念で、クールな構文です)。
なぜ四角いブラケット演算子がDOT演算子表記よりも強力なのですか?これは、四角いブラケットのメンバー名を表すコンテンツを使用してオブジェクトのメンバーにアクセスできるためです。これらには、リテラル、メンバー名を保持する変数、名前の組み合わせ(主に文字列スプライシング)、および速度IF/Then選択(条件?ValueIftrue:ValueIffalse)を使用して高速/その後選択が含まれます。このコンテンツはすべて文字列に処理され、JavaScriptはこの文字列を使用して対応するメンバーを見つけます。
JavaScriptの関数自体はオブジェクトであるため、他の値のように参照できます。式の結果が関数である場合、関数名で関数を直接呼び出すように、ブラケット演算子と直接呼び出すことができます。
このトリックをメソッドに渡すパラメーターで重く使用する場合、混乱を招く括弧により、コードの読み取りが難しくなり、現時点で通常のIF/Else構造を使用する方が賢明であることに注意してください。
(ii)JavaScriptトラバーサルオブジェクトのプロパティとメソッド
JavaScriptは、forを使用して、オブジェクトのプロパティとメソッドを繰り返します。 for intatementはJavaScriptオブジェクトを介してループします。
文法:
コードコピーは次のとおりです。
for(objectnameのvalueName){
//コード
}
ここで、ValueNameは変数名で、プロパティまたはメソッドの名前を保持します。