JavaScript知識總結 --- js數據類型之深拷貝和淺拷貝

在學習一門編程語言的時候,總會先認識它的數據類型,而JS作為一種弱類型的語言,它的數據類型也很是簡單。

最近有朋友問到有關于js數據類型的賦值,我也根據自己的理解和參考一些文檔進行總結一下給大家分享一下,希望理解不到位的大家可以指出來。^_^

1.JS的數據類型分類:

(1)、基本類型: Undefined、Null、Boolean、Number 和String;

(2)、引用類型:對象(object)、數組(array)、函數(function)?;

2.JS的深拷貝和淺拷貝代碼區別

(1)深拷貝:

var obj1 = {a: 1, b: 2,c: 3 };

var obj2 = { A: obj1.a, B: obj1.b, C: obj1.c };

obj2.B =100;

console.log(obj1);????????// { a: 1, b: 2, c: 3 }

console.log(obj2);????????// { a: 1, b: 100, c: 3 }

(2)淺拷貝:

var obj1 = { a: 1, b: 2, c: 3 };???

var obj2 = obj1;?

?obj2.b = 4;

?console.log(obj1);????????// { a: 1, b: 4, c: 3 }????

?console.log(obj2);????????// { a: 1, b: 4, c: 3 }


3.JS的深拷貝和淺拷貝的圖解和概念:


那么js的數據類型和深拷貝、淺拷貝之間又有什么關系呢?我們可以先來看下這張圖:

一般情況下兩種數據類型的賦值情況

從圖中就可以簡單來說可以總結一下:

1.基本類型:名字和值存儲在棧內存中

2.引用數據類型:名字存在棧內存中,值存在于堆內存中,而棧內存中會提供一個引用的地址指向堆內存中的值

上面的總結希望對大家有幫助,當然理解了概念之后,對于實現深拷貝網上也有很多方法,希望大家可以去看看,多看源代碼案例更便于對概念的理解,以后有機會也會將實現深拷貝的方法進行總結,謝謝大家繼續關注勒。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容