2010-12-06 4 views
6

可能性の重複:
Null object in javascriptnullはオブジェクトですか?

Nullがオブジェクトの右ですか?だから私はnullにxを設定する場合、なぜ私はコンストラクタの値を得ることができないのですか?

var x = null; 
alert(typeof x); 
alert(x.constructor); 
+0

@birryreeの可能な複製も、そのトピックの複製ではありません。これは 'null'と' undefined'の違いについてですが、 'null'自体がオブジェクトであるかどうかは疑問です。 – Harmen

答えて

0

ヌルはJavaScriptでオブジェクトではない - nullはnullプリミティブ型の特異インスタンスであり、そのようなものとしてはコンストラクタを有していません。

+0

だから何もありません=) – StingyJack

+0

しかし、そこには1つしかありません。何も何もできません。それ以外は何もできません。あなたが何かを作るなら、それはもう何もありません。 –

11

null JSはプリミティブな値です。どのコンストラクタ関数でも構築されていないため、constructorプロパティはありません。 typeof null'object'であることは、基本的に歴史的な理由から残された恐ろしい嘘です。 JSとのあまりの一貫性を期待しないでください、あなたは失望します!

プリミティブ値は、しばしばオートボクシングにJSでのオブジェクトのように振る舞うことができます。(1).constructor作品を1もプリミティブな値であるにもかかわらず、それが暗黙のうちにnew Number(1)を呼び出すため。しかし、自動的に変換するオブジェクト形式はnull(またはundefined)なので、この場合はエラーが発生します。

通常、constructorは使用しないでください。 JSの上に構築された多くのクラス/インスタンスモデルでは、あなたが考えることはまったく行いません。 instanceofが正常に動作します。

関連する問題