请执行以下操作:
var x = Object('abc');
现在只需在控制台中键入
x
并点击回车即可。它将输出:String {0: "2", 1: "3", 2: "2", 3: "3",....}
现在输入
typeof x
,你会得到object
。这里发生了什么?
请执行以下操作:
var x = Object('abc');
x
并点击回车即可。它将输出:String {0: "2", 1: "3", 2: "2", 3: "3",....}
typeof x
,你会得到object
。对象构造函数返回一个根据传入值适当类型的对象实例。在您的情况下,您传入一个字符串原始值,因此会返回一个String对象。 (请注意,在JavaScript中,字符串原始值和String实例是两种不同的值。它可能很难区分,因为JavaScript在必要时自动将字符串原始值包装在String包装器中。)
typeof
运算符对String实例返回"object"。
var x = "";
是一个原始类型的字符串。
var x = Object('abc');
是一个字符串对象。
有关类型的更多信息,请参阅类型部分: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
Object("foo")
和new String("foo")
会给你完全相同类型的结果。 - Pointytypeof(String('dfdf'))
是string
,而typeof(Object('dfd'))
是object
,因此必须有所区别。 - BenObject("foo")
就相当于new String("foo")
- 当你不用new
调用 String 构造函数时,它会返回一个字符串原始值。(以前的评论已编辑。) - PointyString(123)
会给你"123"
,而Number("123")
会给你123
。 - Pointy