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