可能重复:
Difference between the javascript String Type and String Object?
在Firebug中写下这个简单的代码:
console.log(new String("string instance"));
console.log("string instance");
你看到的是:
为什么这两个console.log()
调用导致不同的输出?为什么字符串文字与通过String
对象创建字符串不同?它是Firebug表示风格吗?或者它们的性质不同?
答案 0 :(得分:6)
他们不同。字符串文字是原始值,而“字符串”实例是对象。必要时,原始字符串类型会自动提升为String对象。
类似地,有数字基元和“数字”实例,以及布尔基元和“布尔”实例。
答案 1 :(得分:2)
new String("...")
返回字符串对象。
"..."
返回字符串原语。
有些不同之处:
new String("foo") === new String("foo")
- false
;对象引用相等规则"foo" === "foo"
- true
;字符串相等规则和
new String("foo") instanceof Object
- true
;它是从Object
"foo" instanceof Object
- false
;它不是一个对象,而是一个原始值由于这些“怪癖”,大多数时候你只想要一个原始值。请注意,字符串对象在添加时会自动转换为原始字符串,在它们上面调用String.prototype
函数等。
更多信息in the specs。
答案 2 :(得分:1)
console.log("string instance");
打印字符串litral,但console.log(new String("string instance"));
是对象,因此它打印字符串的所有细节,如每个索引和字符。注意下面的屏幕截图,它显示"string instance"
的每个字符。
答案 3 :(得分:1)
尝试console.log((new String("string instance")).toString())
无论如何,这是因为new String("string instance")
是一个对象,而console.log不会自动对对象进行字符串化