为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”

why does creating an object using Object('123') create a String() object but typeof is 'object'?

本文关键字:对象 String typeof 一个 Object 创建对象 创建 为什么      更新时间:2023-09-26

这样做:

var x = Object('abc');

现在只需在控制台中键入 x 并单击 Enter 即可。它将输出:

String {0: "2", 1: "3", 2: "2", 3: "3",....}

现在键入 typeof x ,你会得到object

这是怎么回事?

Object 构造函数返回对象的实例,该对象的类型适用于传入的值。在您的情况下,您传入一个字符串基元值,因此您返回一个 String 对象。(请注意,在 JavaScript 字符串基元值和字符串实例中是两种不同类型的值。这可能很难说,因为 JavaScript 会在情况需要时自动将字符串原语包装在字符串包装器中。

typeof运算符返回字符串实例的"对象"。

var x = ""; 

是一个基元类型的字符串。

var x = Object('abc'); 

是一个对象字符串。

检查 类型 部分了解更多信息:http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf