本人記性不是很好,所以決定記下來(lái),未來(lái)的路任重而道遠(yuǎn)
前幾天看到群里有人問(wèn)一個(gè)題目:
function setName (obj) {
obj.name = 'lucy';
var obj = new Object ();
obj.name = 'tom';
}
var person = new Object () ;
setName (person);
alert (person.name);
說(shuō)一下我的理解:首先我們知道person是一個(gè)對(duì)象,在js中對(duì)象是引用類型,是按地址傳遞,所以在我們調(diào)用setName這個(gè)函數(shù)的時(shí)候,把person這個(gè)對(duì)象的地址傳遞給了obj,然后咱們看函數(shù)內(nèi)部,通過(guò)obj.name = 'lucy'使person對(duì)象增加了一個(gè)name屬性,接著在函數(shù)內(nèi)容又創(chuàng)建了一個(gè)對(duì)象,這時(shí)obj就會(huì)保存新對(duì)象的地址,把老的覆蓋掉,所以剩下的操作和person并沒有什么關(guān)系了,最后輸出的是lucy.
大家一起進(jìn)步吧!
新聞熱點(diǎn)
疑難解答
圖片精選