Object.prototype.toString.call与字符串的结果

result of Object.prototype.toString.call with string

本文关键字:字符串 结果 call prototype toString Object      更新时间:2023-09-26

我想用Object.prototype.toString.call解决一个技术问题。在javascript中,当您调用函数"call"时,第一个参数是对"this"或您正在处理的对象的引用。所以我原以为Object.prototype.toString.call("aaa")会产生"aaa",就像您调用"aaa".toString()时一样。

相反,它产生

"[object String]"。

为什么?

标准中明确解释了Object.prototype.toString的行为。

值得注意的步骤是

3) 设O为ToObject(此值)
7) 否则,如果O是一个奇异的String对象,则让内置标签为"String"
19) 返回字符串,该字符串是连接"[object"、标记和"]"的结果。

正如您所看到的,字符串文字(它是一个基元类型,不是对象)首先被转换为字符串对象,然后被标记为String,然后返回输出[object String]

参考文献:

  • 19.1.3.6-Object.prototype.toString