2016-08-23 14 views
0

W3schoolで次のような記述がありました。JavaScriptのデータ型とオブジェクトの型に関する混乱

enter image description here

私は、初心者のJavaの背景から来たので、JavaScriptでデータ型とオブジェクトの種類は私にかなり混乱しています。私はいくつかの質問があります:

  1. "オブジェクト"データ型はどのようなものですか?
  2. データ型 "オブジェクト"とオブジェクト "オブジェクト"の違いは何ですか?
  3. 私はtypeof nullを入力して、「ヌル」のデータ型を見つけるためにしようとしたとき、私のIDEは、それが型であることを私に告げる「オブジェクト」ではなく、私が期待したものであるタイプの「ヌル」、の。
+3

私は情報が混乱し、そうでない場合は平野間違っていると思います。関数もオブジェクトです。そして、ここでは言及されていない他の多くのオブジェクトがあります:Number、String、RegExp ... –

+4

「私はW3Schoolで次のような声明を見ました。 ---最初のルールは、w3schoolsを使用しないでください。決して。 **決して**。 – zerkms

+0

代わりに[MDN docs](https://developer.mozilla.org/en/docs/Web/JavaScript/Data_structures)を試してください。 – Tigger

答えて

1

typeofは常にプリミティブ型を返します。 ( '文字列'、 '番号'、 'オブジェクト'など)。

オブジェクトがプリミティブ型構造、名前と値のペアの系列として格納されている基本データ型の順不同のリストです。

Objectは、プリミティブオブジェクトのコンストラクタです。

var test = {}; 
console.log(typeof test);    // object 
console.log(test instanceof object) // false 
console.log(test instanceof Object) // true 

これによると、typeof意志を使用して、日付またはArrayをチェックするにはobject返す:オブジェクトが実際に日付または配列の場合

typeof [];   // object 
typeof new Date(); // object 

をテストするには、instanceofを使用することができます:

[] instanceof Array;   // true 
new Date() instanceof Date; // true 

typeof nullについては、それがthe MDNに応じてのECMAScriptのバグだとnullにする必要があります。バグはthis answerで詳しく説明されています。 A fixがオプトインで提案されましたが、残念ながらnullをテストするために、この特定の「バグ」を使用しているコードのために変更が拒否されました。多くの場合、非常に不正確な情報が含まれています(W3C(World Wide Webコンソーシアム)と間違われることはない)

1

W3Schoolsの。 Discussion: Why not w3schools.com。代わりに、たとえばMDNから提供された情報を使用します。ここで

はあなたが役に立つでしょうJavaScriptでデータ型についての記事です: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures

のご質問にお答えするには:

オブジェクトは、プロパティのちょうどコレクションです:キーの間の組み合わせ(文字列、数値、オブジェクト...)と値:他のオブジェクト、関数、文字列、数値、...配列(インデックスなどのカスタムなものがいくつかあります)、日付はオブジェクトです。

オブジェクトやオブジェクトなどはありません。

typeof演算はnullを返すオブジェクト理由があるため変更されなかった古いスペックです。 Why is typeof null “object”?

+0

「W3Schoolは正式な情報源ではありません」---公平なMDNは決して「正式な情報源」ではありません。標準のみです。 – zerkms

+0

@zerkmsあなたが正しいです、私は答えを更新します。 –

関連する問題