instanceof と typeof は以前からたまに使っていて、特に typeof は比較的よく使われているのですが、今日 ext のソースコードを調べていて、なんだか似ているなと思ったところがたくさんありました。しかし、それらの違いも含める必要があります。私はオンラインでいくつかの記事を読み、それらの関係についてある程度理解しています。 Instanceof と typeof はどちらも、変数が空かどうか、または変数の型を判断するために使用できます。
typeof は変数の型を取得するために使用されます。Typeof は通常、次の結果のみを返します:
数値、ブール値、文字列、関数、オブジェクト、未定義。 if(a) を使用する代わりに、typeof を使用して、変数が存在するかどうかを取得できます (if(typeof a!="unknown"){} 。a が存在しない (宣言されていない) 場合は、配列の場合エラーが発生します。 , Null 特殊なオブジェクトに typeof を使用すると、常に object が返されます。これは typeof の制限です。
オブジェクトが配列であるかどうかを取得したい場合、または変数がオブジェクトのインスタンスであるかどうかを判断したい場合は、instanceof を使用する必要があります。たとえば、instanceof は、変数がオブジェクトのインスタンスであるかどうかを判断するために使用されます。それは、配列のプロトタイプがオブジェクトであるためです。別の例: function test(){};var a=new test();alert(a instanceof test) は true を返します。
instanceof に関しては、もう 1 つ問題を挿入する必要があります。それは関数の引数です。誰もが引数は配列であると考えるかもしれませんが、instanceof を使用してテストすると、引数が配列ではないことがわかります。見た目は似ていますが、配列オブジェクトです。