(1) メソッドと属性の動的な選択
実際の作業では、ある条件に従って 2 つのメソッド [1] のいずれかを呼び出す、または 2 つの属性間で読み取りと書き込みの操作が実行される、という状況に遭遇することがよくあります。 [2]のいずれかに。次のコードは、この状況を示しています。
if (条件 ) {
myObj.method1(someArg);
} else {
myObj.method2(someArg);
}
JavaScript は、次のような単純な構文を提供します。 、角括弧演算子 ([]) を使用してメソッドとプロパティを動的に選択します。次のコードが示すように、JavaScript には 2 つの同等のメンバー アクセス構文があります (この機能は動的言語で一般的です):
obj[expressionResultingInMembername] == obj.memberName
整数添字を使用してアクセスした場合配列内の要素を追加した後、動的なメンバー選択に角かっこ演算子を使用し始めます。これは、配列オブジェクト自体に、数値の下付き文字で名前が付けられたプロパティ (および length プロパティ) が含まれているためです。ただし、JavaScript ではドット演算子 (.) を使用してこれらのプロパティに直接アクセスすることはできないため、myArray.0 は構文的に不正です (残念ながら、これは優れた構文です)。
角括弧演算子がドット演算子表記よりも強力なのはなぜですか?これは、角かっこ内のメンバー名を表すものであれば何でも使用してオブジェクトのメンバーにアクセスできるためです。これらには、リテラル、メンバー名を保持する変数、名前の組み合わせ (ほとんどの場合は文字列の連結)、および三項演算子を使用した高速な if/then 選択 (条件 ? valueIfTrue : valueIfFalse) が含まれます。このコンテンツはすべて文字列に処理され、JavaScript はこの文字列を使用して対応するメンバーを検索します。
JavaScript の関数はそれ自体がオブジェクトであるため、他の値と同様に参照できます。式の結果が関数である場合は、名前を使用して関数を直接呼び出すのと同じように、かっこ演算子を使用して関数を直接呼び出すことができます。
メソッドに渡されるパラメーターに対してこのような手法を多用すると、括弧がわかりにくくなり、コードが読みにくくなる可能性があることに注意してください。この場合、通常の if/else を使用する方が賢明です。構造。
(2) JavaScript はオブジェクトのプロパティとメソッドを走査します
JavaScript は、for in ステートメントを使用してオブジェクトのプロパティとメソッドを走査します。 for in ステートメントは JavaScript オブジェクトをループし、ループするたびにオブジェクトのプロパティまたはメソッドを取得します。
構文:
(valueName in ObjectName){
// Code
}
このうち、valueName は属性やメソッドの名前を保存する変数名で、valueName の値が変わります。ループするたびに。