JavaScript:Object.prototype.toString(new Number(5))似乎返回了错误的类型

时间:2014-11-19 17:34:14

标签: javascript internal

我正在用Python编写JavaScript解释器,我必须了解内部。考虑一下这段代码(在V8上测试):

Object.prototype.toString(new Number(5)) //gives "[object Object]"

根据specification of Number constructor

"新构造的对象的[[Class]]内部属性设置为" Number"。"

Object.prototype.toString返回以下组合:

"[object ", class, and "]" // where class is the value of [Class]] internal property of O.

为什么返回的值为"[object Object]"而不是"[object Number]"?这是V8中的错误还是我的理解错了?

1 个答案:

答案 0 :(得分:2)

toString没有参与 - 它是对象上的方法。所以,如果你打电话 Object.prototype.toString.call(new Number(5))(因此将Number实例作为this传递),您将获得预期结果:[object Number]

使用参数调用SomeClass.prototype.toString时会得到类似的虚假结果,例如Number.prototype.toString(new Number(5))会给'0'

我在节点上测试了所有这些(使用v8)。