Null是一个对象吗?所以,如果我将x设置为null,为什么我不能获得构造函数值?
var x = null;
alert(typeof x);
alert(x.constructor);
答案 0 :(得分:11)
null
是一个原始值。它不是由任何构造函数构造的,因此它没有constructor
属性。 typeof null
'object'
基本上是因历史原因而保留的可怕谎言。不要期望JS有太多的一致性,你会失望的!
由于自动装箱,原始值通常可以像JS中的对象一样:尽管(1).constructor
也是原始值,但1
仍可正常工作,因为它隐式调用new Number(1)
。但是没有null
(或undefined
)的对象形式可以自动转换为,因此在这种情况下会出现错误。
一般情况下,您应该避免使用constructor
。对于构建在JS之上的许多类/实例模型,它根本不能完成您的想法。 instanceof
通常效果更好。
答案 1 :(得分:0)
Null不是Javascript中的对象 - null是null
基元类型的单数实例,因此没有构造函数。