是[object Null]& [对象未定义]尚未实现?

时间:2013-05-31 19:16:48

标签: javascript null undefined specifications ecmascript-5

在阅读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]

1 个答案:

答案 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)。