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