JS中物件資料存盤
物件資料存盤在堆疊中,堆疊的資料讀取,寫入速度快,但是存盤的內容較少,堆的讀取和寫入速度慢,但是存盤的內容多,舉個例子來說就像電腦中記憶體和硬碟,記憶體就像堆疊,需要經常獲取,寫入速度比較快時需要寫道記憶體也就是需要存盤在堆疊中的資料,其中字符型,數值型,布爾型,undefined存盤在堆疊中,堆疊中,一旦該變數不再使用時就會被清理掉,而物件是存盤在堆中,當堆中有物件時,它會相對應記憶體中有一個存盤的地址,在堆疊中obj存盤了在堆中資料的地址,當呼叫資料時,去堆中調取對應堆中的資料的地址獲取出來,



如圖,代碼執行時一行接著一行,先創建一個物件,列印在控制臺后,把obj的a值改為10,在控制臺點開物件前的箭頭時,obj的a值卻已經更改為10,這就是我們在列印后去更改,可在去點擊箭頭時,才會去堆中對應地址獲取資料,所以獲取的就是最新的資料,


如圖,如果將obj賦值給obj1,就相當于把obj在堆中存盤資料的地址給到obj1,obj1更改物件原有的資料時,obj也會跟著更改,


如圖,如果將obj賦值給obj2,但在obj生成新物件時,就會在堆疊中創建一個新的存盤資料的地址,所以后更改物件資料時更改到就是新的存盤資料的地址中,而obj2的存盤資料地址還是原來的物件地址,所以列印后只有物件在沒有生成新物件之前的堆中地址存盤的資料,

如圖,如果將obj賦值給obj3,兩個物件在堆中存盤地址相同時,我們兩個物件都不想去使用時,把堆中物件存盤的地址丟棄時,該資料在堆中存在,并且找不到它,當如此情況非常多時,稱之為記憶體泄漏,會造成卡死,想要解決掉這個問題,
就需要把物件堆中存盤資料地址的所有參考物件全部先設定為null,之后再去重新賦值,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/203126.html
標籤:AI
上一篇:React的JSX部分核心語法
