ホームページ  >  記事  >  ウェブフロントエンド  >  JS_javascriptスキルにおけるtypeofとinstanceofの違いのまとめ

JS_javascriptスキルにおけるtypeofとinstanceofの違いのまとめ

WBOY
WBOYオリジナル
2016-05-16 17:15:27899ブラウズ

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)) はオブジェクトを取得します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。