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

标签 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的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/

相关文章:

android - 我在哪里可以将默认图像存储在 android 的内部存储上

javascript - 如何在 MongoDB 中修改动态添加的文档字段

javascript - 如何将 .js 密码设置为星号?

javascript - 如何使用图像映射写入区域的文本中心?

java - 将对象写入内部存储

Android 移动到 SD 卡行为

.htaccess - Magento <IfVersion',可能拼写错误或由未包含在服务器配置中的模块定义

javascript - 背景视频不显示 Electron

javascript - 如何将 defaultOption 添加到 AsyncSelect?

properties - 使用内部 setter 进行属性注入(inject)