文章出處
文章列表
1.
當從一個變量向另一個變量賦值引用類型的值時,同樣也會將存儲在變量中的對象的值復制一份放到為新變量分配的空間中。前面講引用類型的時候提到,
保存在變量中的是對象在堆內存中的地址,所以,與簡單賦值不同,這個值的副本實際上是一個指針,而這個指針指向存儲在堆內存的一個對象。那么賦值操作后,
兩個變量都保存了同一個對象地址,則這兩個變量指向了同一個對象。因此,改變其中任何一個變量,都會相互影響:
-
var a = {}; // a保存了一個空對象的實例var b = a; // a和b都指向了這個空對象a.name = 'jozo';console.log(a.name); // 'jozo'console.log(b.name); // 'jozo'b.age = 22;console.log(b.age);// 22console.log(a.age);// 22console.log(a == b);// true
它們的關系如下圖:
立個flag:復習一下計算機系統,徹底搞清楚堆內存的實現方式。
編譯的時候先把代碼里的所有a對象的相關部分拿出來分析決定a對象在堆區內存中占的空間大小還是按順序編譯,遇到a的內容重新擴容?
棧區就是個string -- > string 的map?
文章列表
全站熱搜