我正在用 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的bug还是我的理解有误?
最佳答案
toString
不接受参数——它是对象的一个方法。所以如果你打电话
Object.prototype.toString.call(new Number(5))
(因此将 Number 实例作为 this
传递),您将得到预期的结果:[object编号]
。
当使用参数调用 SomeClass.prototype.toString
时,您会得到类似的虚假结果,例如 Number.prototype.toString(new Number(5))
将给出 '0'
。
我在节点(使用 v8)上测试了所有这些。
关于JavaScript:Object.prototype.toString(new Number(5)) 似乎返回错误的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023277/