javascript-Object.prototype.toString.call的结果(带有字符串)

javascript-Object.prototype.toString.call的结果(带有字符串),javascript,Javascript,我想通过Object.prototype.toString.call解决一个技术问题。在javascript中,当您调用函数“call”时,第一个参数是对“this”或您正在处理的对象的引用。所以我期望Object.prototype.toString.call(“aaa”)会产生“aaa”,就像调用时的“aaa.toString()一样 相反,它会让步 “[对象字符串]” 这是为什么?中明确解释了Object.prototype.toString的行为 值得注意的步骤是 3) 设O为对象(此值

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

相反,它会让步

“[对象字符串]”


这是为什么?

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

值得注意的步骤是

3) 设O为对象(此值)。
7) 否则,如果O是一个奇异的字符串对象,那么让builtinTag为“String”。
19) 返回串接“[object”、标记和“]”的结果字符串

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

参考资料:


    • 中明确解释了
      Object.prototype.toString
      的行为

      值得注意的步骤是

      3) 设O为对象(此值)。
      7) 否则,如果O是一个奇异的字符串对象,那么让builtinTag为“String”。
      19) 返回串接“[object”、标记和“]”的结果字符串

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

      参考资料:


      因为
      Object.prototype.toString
      String.prototype.toString
      不同,基本上你是在做传递对象的原型的toString,而不是对象本身的toString。这是一种计算变量是什么类型的对象的方法,而不是简单地获取变量的字符串表示形式。因为
      object.prototype.toString
      string.prototype.toString
      不同,基本上你是在做传递对象的原型的toString,不是对象本身的toString。它是一种计算变量是什么类型的对象的方法,而不是简单地获取变量的字符串表示形式。