1 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
這是一道非常好的題目,強(qiáng)迫癥發(fā)作寫得有點(diǎn)詳細(xì)(啰嗦)了(尬
一、基礎(chǔ)理解
1.區(qū)分普通字符串和字符串類型對(duì)象
①普通字符串
var str = "foo" 等同于var str = String("foo")
②字符串類型對(duì)象
var str = new String("foo")
2.new String() 等同于 new (String)
var strStd = new String()
var strUnq = new (String)
console.log(strStd)
console.log(strUnq)
二者都是經(jīng)由 new 這個(gè)操作符,再結(jié)合Sring類型的構(gòu)造函數(shù)生成的。
二、進(jìn)階實(shí)驗(yàn)
如果還是覺得抽象,我們把初始值分離出來(lái),再寫2段代碼跑一遍,對(duì)比下結(jié)果就基本明白了!
第1段:沒初始值
var foo = String()
var bar = new String()
console.log(foo)//nothing
console.log(bar)//a new String object
第2段:有初始值
var foo = String("foo")
var bar = new String("bar")
console.log(foo)//"foo"
console.log(bar)//a new String Object with primitive value "bar"
添加回答
舉報(bào)