在阅读MDN here时,我遇到了
从JavaScript 1.8.5开始toString()调用null返回[object Null]和undefined返回[object Undefined],如第5节中所定义 ECMAScript版本和随后的勘误表。请参阅使用toString 检测对象类型。
我试过Object(null).toString()
& Object(undefined).toString()
并且都返回"[object Object]"
根据specification,JS中的原始类型是Undefined,Null,Boolean,Number或String。
因此,假设目前尚未实施所有浏览器,这是正确的:
[object Undefined]
& [object Null]
?
答案 0 :(得分:2)
要获取内部[[Class]],您需要将值设置为this
的{{1}}值,因此:
Object.prototype.toString()
这在ECMAScript 5中定义如下:
8.6.2对象内部属性和方法
Object.prototype.toString.call(null); // [object Null] Object.prototype.toString.call(undefined); // [object Undefined]
内部属性的值由此规范为每种内置对象定义。宿主对象的[[Class]]
内部属性的值可以是除[[Class]]
之一之外的任何字符串值。内部使用[[Class]]内部属性的值来区分不同类型的对象。 请注意,除了通过"Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp", and "String"
之外,此规范不提供程序访问该值的任何方法(参见15.2.4.2)。