在談深拷貝與淺拷貝之前,我們先來談談js的資料型別,這對接下來了解深拷貝淺拷貝起到一定的作用。
棧記憶體棧是自動分配相對固定大小的記憶體空間,而且由系統自動釋放的。
棧是線性結構,後進先出。
基本資料型別:
null、 undefined、number、string、boolean、symbol(es6)。
基本資料型別存放在棧記憶體中,佔據固定的大小空間。是直接按值儲存的。因為記憶體空間大小確定且由系統自動分配和釋放,所以記憶體可以及時**,相較堆可更容易管理記憶體空間。
堆記憶體堆是動態分配記憶體的,記憶體大小不定,而且也不會自動釋放。
引用資料型別:
object(在js中除了基本資料型別其他的都是物件)陣列是物件,函式是物件,正則是物件。
引用資料型別存放在堆記憶體中,空間大小不一。實際上,引用資料型別的資料的位址指標儲存在棧記憶體,當要訪問引用型別的值時,是先從棧找到物件的位址指標,再通過指標找到堆中資料。
var arr1 =[1
,2,3
];var arr2 = arr1;
// 傳址 ,物件中傳給變數的資料是引用型別的,會儲存在堆中,複製的其實是指標,兩個變數最終指向同乙個物件。
var a = arr1[0]
;//傳值,把物件中的屬性/陣列中的陣列項賦值給變數,這時變數a是基本資料型別,儲存在棧記憶體中;改變棧中的資料不會影響堆中的資料
簡單的畫個圖。
基本資料型別與引用資料型別
基本資料型別與引用資料型別 基本資料型別 基本資料型別 大小 範圍 預設值 int 整形 32 2147483648 2147483648 0 long 長整形 64 9233372036854477808 9233372036854477808 0 float 浮點形 32 3.40292347e...
基本資料型別與引用資料型別
byte short int long float double boolean charstring class sun提供的 system.class sun提供的 student.calss 程式設計師自定義的 user.class 程式設計師自定義的 product.class程式設計師自定...
基本資料型別 引用資料型別
一 基本資料型別 基本資料型別 number string boolean null undefined symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。二 引用資料型別 引用資料型別 object 在j...