JSには5つの元の値、6種類の審査、および9つのネイティブビルトインコンストラクターがあります。
この569は、JS言語の基礎を形成します。
5つのオリジナルの値は、数字、文字、ブールリアン、ヌル、未定義です
typeofは、数字、文字、ブール人、オブジェクト、機能、未定義を判断できます。両方の出力オブジェクトのタイプのnullとarraysに注意してください。
typeofは、配列とオブジェクトを区別できません。タイプを判断する方法は? object.prototype.tostring.apply()を使用します。
if(value && typeof value === 'object' && value.constructor === array)
上記の検出が異なるフレームとウィンドウで作成された場合、falseが指定され、ウィンドウオブジェクトが異なります。
信頼できる方法は、(object.prototype.tostring.apply(value)=== "[object array]")の場合です。
引数配列は配列ではなく、長さのメンバー属性を持つオブジェクトにすぎません。
次の例に示すように、引数は通常の配列ではありません
コードコピーは次のとおりです。
var a = function(){
var b = object.prototype.tostring.apply(arguments);
console.log(b);
}
a(); //出力[オブジェクト引数]
コードコピーは次のとおりです。
var a = function(){
var c = [];
var b = object.prototype.tosttring.apply(c);
console.log(b);
}
a(); //出力[オブジェクト配列]
インスタンスがインスタンスがインスタンスであるかどうかをどのように決定しますか
プロトタイプのプロパティにはコンストラクターがあります。
デフォルトのプロトタイププロパティは、複雑な値に設定できるオブジェクトオブジェクトであり、元の値への設定を無視します。
彼はすべてオブジェクトですが、彼は特別であり、円形のチェーンは各インスタンスをそのコンストラクターのプロトタイププロパティにリンクしています。インスタンスとコンストラクターのプロトタイプ属性の間には隠されたリンクがあります。これは、インスタンスの__Proto__です。同時に、インスタンスのコンストラクター属性は、コンストラクター関数プロトタイプのコンストラクターのコンストラクターを介して取得されます。
ただし、新しいインスタンスにコンストラクター属性を持つことができるように、コンストラクターを保持する必要があります。また、InstanceOfを使用して判断することもできます。
コードコピーは次のとおりです。
var foo = function(){}
foo.prototype = {constructor:foo}
var fooinstance = new foo;
fooinstance .__ proto __ === foo.prototype; // true
fooinstance.constructor === foo; //真実
実際、判断の事例は、コンストラクターに基づいているのではなく、次の例に示すように、プロトタイプチェーンに基づいています。
コードコピーは次のとおりです。
var foo = function(){};
foo.prototype = {};
var fooinstance = {};
fooinstance .__ proto __ = foo.prototype;
console.log(fooinstance instance of foo); // true
コンストラクターなしの元の値を使用します
どの値がfalse:false、 ""、null、0、-0、nan、未定義で、これらはfalse、その他は真です
ただし、次の例に注意してください
コードコピーは次のとおりです。
var a = boolean(false);
var b = new boolean( "");
if(a){console.log(a);} //出力できません
if(b){console.log(b);} // boolean {[[[primivityvalue]]:false}新しいものはオブジェクトに相当します、それはfalseではありません
上記の記事はもう少し理論的ですが、これらはJavaScript言語の基礎であり、明確に理解する必要があります。