物件傳址觀念的實際運作模式
在這篇章節來實做看看傳址的運作模式,由下面的程式碼為範例。
| 1 | var a = {x: 1}; | 
接下來就一步一步的來看看傳址的運作邏輯吧!
第一步驟
| 1 | var a = {x: 1}; | 

因為物件型別是傳址的特性,所以 var b = a; 時是指向同一個位址。
第二步驟
| 1 | a.y = a = {x: 2}; | 

雖然 =(等號) 的相依性是由右至左,但a.y = a = {x: 2};是同時運行的,所以 a.y 和 a 都會指向同一個位址。
最後
| 1 | console.log(a.y); | 
這邊可以由第二步驟看到,由於 a 已經指向 0x02 的位址,裡面並沒有 y 這個屬性,所以會回傳 undefined。
而第二步驟時 a.y = a = {x: 2}; 裡面的 a.y = {x: 2}; 其實也可以等於 b.y = {x: 2};,因為它們在這時還是同一個參考位址。
所以就會產生下列這樣的結果 ↓
