1) typeof 演算子 typeof は単項演算子であり、戻り結果はオペランドの型を説明する文字列です。例: 「数値」、「文字列」、「ブール値」、「オブジェクト」、「関数」、「未定義」 (変数が存在するかどうかを判断するために使用できます)。
ただし、typeof の機能は限られています。Date 型と RegExp 型に対しては「オブジェクト」を返します。例:
typeof {}; // "オブジェクト"
typeof [] // "オブジェクト"
;したがって、オブジェクトとプリミティブ型を区別する場合にのみ役立ちます。あるオブジェクト タイプを別のオブジェクト タイプと区別するには、他の方法を使用する必要があります。例:instanceof 演算子またはオブジェクトのコンストラクター属性。
2) インスタンスオブ演算子。
instanceof 演算子では、左側のオペランドがオブジェクトであり、右側のオペランドがオブジェクト クラスの名前またはコンストラクターである必要があります。 object がクラスまたはコンストラクターのインスタンスである場合、instanceof 演算子は true を返します。 object が指定されたクラスまたは関数のインスタンスではない場合、または object が null の場合は false を返します。例:
[]instanceofArray; //true
[]instanceofRegExp; //false
new DateinstanceofDate;
したがって、instanceof 演算子を使用して、オブジェクトが配列型であるかどうかを判断できます。 }
3) コンストラクター属性。
JavaScript では、各オブジェクトには、オブジェクトを初期化するコンストラクターを参照するコンストラクター属性があり、不明なオブジェクトの種類を決定するためによく使用されます。たとえば、クエリ値が指定された場合、typeof 演算子を使用して、それがプリミティブ値であるかオブジェクトであるかを判断します。オブジェクトの場合は、コンストラクター属性を使用してその型を決定できます。したがって、配列を決定する関数は次のように書くこともできます。
function isArray(arr)
{
return typeof arr == "object" && arr.constructor == Array; >}
多くの場合、instanceof 演算子またはオブジェクトのコンストラクター プロパティを使用して、オブジェクトが配列であるかどうかを検出できます。たとえば、多くの JavaScript フレームワークは、これら 2 つのメソッドを使用して、オブジェクトが配列型であるかどうかを判断します。
ただし、クロスフレーム ページ内の配列を検出すると失敗します。その理由は、異なるフレーム (iframe) で作成された配列がプロトタイプのプロパティを相互に共有しないためです。例:
コードをコピーします
コードは次のとおりです。