結果が偽になるのはなぜですか? コードをコピー コードは次のとおりです: <br>var aColors = ["red", "green", "blue"]; <br>alert(typeof aColors[0]); //出力 "string" <br>alert(aColors[0] instanceof String) ; //output "false"; <br><br> </div>string と String の違いを区別する必要があります <br>aColors[0] は文字列値の型です、もちろん String La のインスタンスではありません。次のコードを参照してください。 <br>var aColors = ["red", "green", "blue"]; <br>aColors[0]= new String("1") <br>alert(typeof aColors[0]) ); //output "Object" <br>alert(aColors[0]instanceof String); //output "true";<br><br>詳細については、次の記事を参照してください。 ><br>instanceof 演算子 <br> <br> は、オブジェクトが特定のクラスのインスタンスであるかどうかを示すブール値を返します。 <strong>result = クラスのオブジェクト インスタンス </strong>パラメータ <br>結果 <br>必須。任意の変数。 <br>オブジェクト <br>必須。任意のオブジェクト式。 <br>クラス<br>必須。定義された任意のオブジェクト クラス。 <br>説明 <br>instanceof 演算子は、オブジェクトがクラスのインスタンスである場合に true を返します。オブジェクトが指定されたクラスのインスタンスではない場合、またはオブジェクトが null の場合は false を返します。 <br>例 <br>次の例は、instanceof 演算子の使用法を示しています。 <br><br><br><br><div class="codetitle">コードをコピー<span><a style="CURSOR: pointer" data="68228" class="copybut" id="copybut68228" onclick="doCopy('code68228')"><u> コードは次のとおりです。 </u></a> </span>function objTest(obj){ </div> var i, t, s = ""; // 変数を作成します。 <div class="codebody" id="code68228">t = new Array(); // 配列を作成します。 <br>t["Date"] = 日付を入力します。 <br>t["Object"] = オブジェクト; <br>t["Array"] = 配列; <br>for (i in t) <br>{ <br>if (obj instanceof t[i]) / /objのクラスを確認します。 <br>{ <br>s = "obj は " i "n" のインスタンスです。 <br>} <br>else <br>{ <br>s = "obj は " i "n" のインスタンスではありません; <br>} <br>} <br>return(s); // 文字列を返します。 <br>} <br>var obj = new Date(); <br>document.write(objTest(obj)); <br><br> <br>Instanceof と typeof の両方を使用して、変数が空、または変数のタイプ。 <br>Typeof は変数の型を取得するために使用されます。Typeof は通常、数値、ブール値、文字列、関数、オブジェクト、未定義の結果のみを返します。 if(a) を使用する代わりに、typeof を使用して、変数が存在するかどうかを取得できます (if(typeof a!="unknown"){} 。a が存在しない (宣言されていない) 場合は、配列の場合エラーが発生します。 , Null 特殊なオブジェクトに typeof を使用すると、常に object が返されます。これは typeof の制限です。 </div>オブジェクトが配列であるかどうかを取得したい場合、または変数がオブジェクトのインスタンスであるかどうかを判断したい場合は、instanceof を使用する必要があります。たとえば、instanceof は、変数がオブジェクトのインスタンスであるかどうかを判断するために使用されます。これは、配列がオブジェクトのサブクラスであるためです。別の例: function test(){};var a=new test();alert(a instanceof test) は true を返します。 <br>instanceof に関しては、もう 1 つ問題を追加する必要があります。それは関数の引数です。誰もが引数は配列であると考えるかもしれませんが、instanceof を使用してテストすると、引数が配列ではないことがわかります。見た目は似ていますが、配列オブジェクトです。 <br>また: <br>Test var a=new Array();if (オブジェクトのインスタンス) alter('Y');else alter('N'); <br>Get 'Y' <br>But if (windowinstanceofObject)alersealert('Y');elsealert('N'); <br>Get'N' <br>つまり、instanceof でテストされるオブジェクトは、dom モデルではなく、js 構文のオブジェクトを指します。物体。 <br>typeof を使用する場合、いくつかの違いがあります。 <br>alert(typeof(window) will get object <br>若いときは、口数を減らし、より多くのことを行うべきです。