Javascript 为什么使用object(';123';)创建一个String()对象,而typeof是';对象';?
这样做:Javascript 为什么使用object(';123';)创建一个String()对象,而typeof是';对象';?,javascript,Javascript,这样做: var x = Object('abc'); 现在只需在控制台中键入x,然后单击enter。它将输出: String {0: "2", 1: "3", 2: "2", 3: "3",....} 现在键入typeof x,您将得到对象 这里发生了什么?对象构造函数返回一个对象的实例,该对象的类型适合于传入的值。在本例中,您传入一个字符串原语值,这样您就可以得到一个字符串对象。(注意,在JavaScript中,字符串原语值和字符串实例是两种不同的值。这可能很难区分,因为JavaScri
var x = Object('abc');
现在只需在控制台中键入x
,然后单击enter。它将输出:
String {0: "2", 1: "3", 2: "2", 3: "3",....}
现在键入typeof x
,您将得到对象
这里发生了什么?对象构造函数返回一个对象的实例,该对象的类型适合于传入的值。在本例中,您传入一个字符串原语值,这样您就可以得到一个字符串对象。(注意,在JavaScript中,字符串原语值和字符串实例是两种不同的值。这可能很难区分,因为JavaScript会在情况需要时自动将字符串原语包装在字符串包装器中。)
typeof
操作符返回字符串实例的“object”
var x = "";
是基本类型字符串
var x = Object('abc');
是一个对象字符串
查看“类型”部分了解更多信息:
我注意到
y=String('1212')
返回类型为String
的对象。所以你可以有一个对象构造函数的字符串实例,也可以有一个字符串构造函数的字符串实例?这两种类型本质上是不同的?@benno-对象构造函数很奇怪。它返回一个字符串实例,而不是对象实例。换句话说,Object(“foo”)
给出的结果与newstring(“foo”)
的结果完全相同@Ben我试图通过使用小写字母表示原语,大写字母表示对象来区分String原语类型和String对象类型。@Ben哦,对不起,我应该说Object(“foo”)
与new String(“foo”)
相同-在没有new
的情况下调用字符串构造函数时,字符串构造函数会返回一个字符串原语值。(旧评论编辑。)@Ben在这方面字符串构造函数就像数字构造函数-String(123)
给你“123”
,而Number(“123”)
给你123
。