ホームページ > 記事 > ウェブフロントエンド > JS_javascriptスキルにおけるtypeofとinstanceofの違いのまとめ
JavaScript では、typeof とinstanceof は、変数が空かどうか、またはその型を判断するためによく使用されます。しかし、それらの間にはまだ違いがあります:
タイプ
typeof は単項演算であり、オペランドの前に置かれ、オペランドは任意の型にすることができます。
戻り値は、オペランドの型を説明する文字列です。 typeof は通常、次の結果のみを返すことができます:
数値、ブール値、文字列、関数、オブジェクト、未定義。 変数が存在するかどうかを取得するには、if(a) を使用する代わりに、if(typeof a!="unknown"){alert("ok")} のように、変数が存在するかどうかを取得できます。これは、変数が存在しない (宣言されていない) ためです。 )、Array や Null などの特殊なオブジェクトの場合、typeof は常に object を返します。これは typeof の制限です。
のインスタンス
インスタンス: インスタンス、例
a instanceof b?alert("true"):alert("false"); //a は b のインスタンスですか?真:偽
instanceof は、変数がオブジェクトのインスタンスであるかどうかを判断するために使用されます。例: var a=new Array();alert(a instanceof Array);
は true を返し、alert(a instanceof Object) はまた true を返します。これは、Array がオブジェクト
のサブクラスであるためです。別の例: function test(){};var a=new test();alert(a instanceof test) は
instanceof と言えば、もう 1 つ問題を追加する必要があります。それは関数の引数です。私たちは皆、引数が
配列であると考えるかもしれませんが、instanceof を使用してテストすると、引数がそうでないことがわかります。見た目は非常に似ていますが、Array オブジェクトです。
また:
テスト var a=new Array();if (オブジェクトのインスタンス)alert('Y');else warning('N');
「Y」を取得しました
ただし、if (オブジェクトのウィンドウインスタンス)alert('Y');elsealert('N');
わかりました
つまり、ここで instanceof によってテストされるオブジェクトは、dom モデル オブジェクトではなく、js 構文のオブジェクトを指します。
typeof を使用するといくつかの違いがあります
alert(typeof(window)) はオブジェクトを取得します