ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptの基本型を詳しく解説_基礎知識

JavaScriptの基本型を詳しく解説_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:29:501371ブラウズ

jsにはプリミティブ値が合計5つあり、typeofで判定できるものが6つ、ネイティブの組み込みコンストラクタが9つあります。

これら 569 は、js 言語の基礎を形成します。

5 つのプリミティブ値は次のとおりです: 数値、文字、ブール値、null、未定義

Typeof は、数値、文字、ブール値、オブジェクト、関数、未定義を判断できます。 null と配列、両方の出力オブジェクトの型に注意してください。

typeof は配列とオブジェクトを区別できません。どうやって型を決定するのですか? Object.prototype.toString.apply() を使用します。

if(value&&typeof value ==='object'&&value.constructor === Array)

配列が異なるフレームとウィンドウで作成され、ウィンドウ オブジェクトが異なる場合、上記の検出は false を返します。

信頼できるメソッドは if(Object.prototype.toString.apply(value)==="[object Array]")

引数の配列は配列ではなく、長さのメンバー プロパティを持つ単なるオブジェクトです。
次の例に示すように、引数は通常の array

ではありません。

コードをコピーします コードは次のとおりです:

var a = function (){
var b = Object.prototype.toString.apply(arguments);
console.log(b);

}
a();//出力 [オブジェクトの引数]

コードをコピーします コードは次のとおりです:

var a = function (){
var c = [];
var b = Object.prototype.toString.apply(c);
console.log(b);

}
a();//出力 [オブジェクト配列]

instanceof はインスタンスであるかどうかをどのように判断しますか?

プロトタイプの属性にはコンストラクターが含まれます。

デフォルトのプロトタイプ属性は object オブジェクトであり、元の値を無視して任意の複雑な値に設定できます。

これはオブジェクトですが特別であり、循環チェーンは各インスタンスをそのコンストラクターのプロトタイプ属性にリンクします。インスタンスとコンストラクターのプロトタイプ プロパティ (インスタンスの __proto__) の間には、隠されたリンクがあります。同時に、インスタンスのコンストラクター属性は、コンストラクター プロトタイプのコンストラクターを通じて取得されます。

ただし、コンストラクターは保持しておくと、新しいインスタンスがコンストラクターの属性を持ち、instanceof を使用して判断することもできます。

コードをコピーします コードは次のとおりです:

var Foo = function(){}

Foo.prototype={constructor:Foo}

var FooInstance = new Foo;

FooInstance.__proto__=== Foo.prototype;//true

FooInstance.constructor === Foo

実際には、次の例に示すように、instanceof の判断はコンストラクターではなく、プロトタイプ チェーンに基づいています。

コードをコピーします コードは次のとおりです:

var Foo = function(){};
Foo.prototype={};
var FooInstance = {};
FooInstance.__proto__=Foo.prototype;
console.log(FooInstanceinstanceofFoo);//true

コンストラクターは使用せず、プリミティブ値を使用します

どの値が false とみなされるか: false、""、null、0、-0、NaN、未定義、これらは false とみなされ、その他は true

ただし、次の例に注意してください

コードをコピーします コードは次のとおりです:

var a = Boolean(false);
var b = new Boolean(""); If (a){console.log(a);}//
を出力できません (b){console.log(b);}//Boolean {[[PrimitiveValue]]: false} new がオブジェクトと同等の場合、false ではありません

上記の記事はもう少し理論的ですが、これらは JavaScript 言語の基礎であり、明確に理解する必要があります。

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