2

在这里阅读 MDN时,我遇到了

从 JavaScript 1.8.5 开始,在 null 上调用的 toString() 返回 [object Null],而 undefined 返回 [object Undefined],如 ECMAScript 第 5 版和后续勘误表中所定义。请参阅使用 toString 检测对象类型。

我试过Object(null).toString()&Object(undefined).toString()

都回来了 "[object Object]"

根据规范,JS 中的原始类型是 Undefined、Null、Boolean、Number 或 String。

那么假设目前所有浏览器尚未实现是否正确:

[object Undefined]& [object Null]?

4

1 回答 1

2

要获取内部的 [[Class]],需要将值设置为 的thisObject.prototype.toString(),因此:

Object.prototype.toString.call(null);      // [object Null]
Object.prototype.toString.call(undefined); // [object Undefined]

这在 ECMAScript 5 中定义如下:

8.6.2 对象内部属性和方法

[[Class]]本规范为每种内置对象定义了内部属性的值。宿主对象的[[Class]]内部属性的值可以是任何 String 值,除了"Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp", and "String". [[Class]] 内部属性的值在内部用于区分不同种类的对象。请注意,除了通过(见 15.2.4.2)外,本规范不提供程序访问该值的任何方法。Object.prototype.toString

于 2013-05-31T19:17:49.440 回答