null是一个对象吗?

时间:2010-12-06 20:14:12

标签: javascript

  

可能重复:
  Null object in javascript

Null是一个对象吗?所以,如果我将x设置为null,为什么我不能获得构造函数值?

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

2 个答案:

答案 0 :(得分:11)

JS中的

null是一个原始值。它不是由任何构造函数构造的,因此它没有constructor属性。 typeof null 'object'基本上是因历史原因而保留的可怕谎言。不要期望JS有太多的一致性,你会失望的!

由于自动装箱,原始值通常可以像JS中的对象一样:尽管(1).constructor也是原始值,但1仍可正常工作,因为它隐式调用new Number(1)。但是没有null(或undefined)的对象形式可以自动转换为,因此在这种情况下会出现错误。

一般情况下,您应该避免使用constructor。对于构建在JS之上的许多类/实例模型,它根本不能完成您的想法。 instanceof通常效果更好。

答案 1 :(得分:0)

Null不是Javascript中的对象 - null是null基元类型的单数实例,因此没有构造函数。