鍍金池/ 問答/HTML/ 將一個(gè)對(duì)象的對(duì)象屬性賦值給同名變量(瀏覽器與node表現(xiàn)不同)

將一個(gè)對(duì)象的對(duì)象屬性賦值給同名變量(瀏覽器與node表現(xiàn)不同)

node環(huán)境下可以得到正確的值

瀏覽器環(huán)境下出現(xiàn)了奇怪的值

我的chrome版本是63.0

請(qǐng)問這是瀏覽器的bug嗎?同樣的情況在火狐瀏覽器里也有出現(xiàn)

回答
編輯回答
懶豬
window.name

name改成別的名字的變量,或者用let聲明。

2017年10月1日 11:45
編輯回答
真難過

window.namewindow對(duì)象上本來就存在的一個(gè)屬性,這個(gè)屬性是一個(gè)字符串類型,當(dāng)你使用var name = a.name的時(shí)候,其實(shí)就是給window.name賦值。
因?yàn)?code>window.name只接受字符串類型的值,所以如果該值不是字符串類型,會(huì)強(qiáng)制轉(zhuǎn)換成字符串類型。
a.name是一個(gè)對(duì)象,所以會(huì)調(diào)用toString.call(a.name, a.name),這個(gè)結(jié)果是'[object Object]',所以name就變成了'[object Object]'。
node環(huán)境里面,name并不是全局對(duì)象的屬性,所以可以正常設(shè)置。

2017年6月11日 18:00