2017-04-06 19 views
-1

的JavaScript學習的影響 - 請幫助理解,使用Javascript - 分配空對象

在下面的JS代碼片段,在添加一個「綽號」屬性對象PERSON1,它的人物體反射爲好。

但是,當person1設置爲空對象{}時,請幫助理解爲什麼它不影響person對象?


var person = { 
    "firstname" : "Tony", 
    "lastname" : "Stark" 
}; 

var person1 = person; 

person1.nickname = "Ironman"; 

console.log(person); 
//Object { firstname: "Tony", lastname: "Stark", nickname: "Ironman" } 
console.log(person1); 
//Object { firstname: "Tony", lastname: "Stark", nickname: "Ironman" } 

person1 = {}; 

console.log(person); 
//Object { firstname: "Tony", lastname: "Stark", nickname: "Ironman" } 
console.log(person1); 
//Object { } 

在此先感謝!

回答

0

在下面的JS代碼片段中,當「暱稱」屬性添加到對象 person1時,它也反映在Person對象中。

你做person1 = person所以,現在兩個變量指向相同的內存地址,所以不同的人會反映在另一個。

但是,當person1設置爲空對象{}時,請幫助 瞭解爲什麼它不影響person對象?

這樣做person1 = {},你分配一個新內存地址,以便personperson1現在是兩個不同的實體,並改變一個不會影響其他。

+0

嗨艾米特,謝謝你的時間!能夠在上面關於{}分配新的內存地址的解釋進行關聯,但是,將Person1賦值爲null或undefined並不會影響Person對象 - 任何提示爲什麼? – SAP

+0

@SAP不客氣的朋友! :) –

0

Objects基本上在它被分配給另一個變量的時候被引用。所以當你影響存儲在一個變量中的一個object時,它也會影響另一個變量,因爲它們都共享相同的引用。

而且當您用另一個值替換參考時,舊參考將被切斷,並且具有新存儲器參考的新object將被存儲。