文字說明:
比如乙個陣列(array)淺度拷貝是當陣列a變數成陣列b的時候,b改變裡面的陣列數值的時候,a也隨著改變,
深度拷貝是噹噹陣列a變數成陣列b的時候,b改變裡面的陣列數值的時候,a裡面的陣列陣列不隨著改變,
那麼為什麼淺度拷貝會改變a的陣列值而深度拷貝則不會呢?
因為淺度拷貝指向的是同乙個記憶體,而深度拷貝是增加了乙個新的記憶體,所以不會影響到原來a的記憶體, 所 以就不會改變原來的值
例子:淺度拷貝
var arr=["a","b","c","d","e"];
var arr=arr;
arr[1]='h';
console.log('arr:'+arr); //arr的下標1的『b』也變成了『h』 結果是:arr:a,h,c,d,e
console.log("arr:"+arr);//結果是:arr:a,h,c,d,e
深度拷貝
var arr=["a","b","c","d","e"];
var arr=json.stringify(arr);//先轉化為string字串的型別
var brr=json.parse(arr);//在解析字串的型別
brr[1]='h'; //這樣修改brr中的陣列的時候就不會影響到arr裡面陣列的值
console.log('arr:'+arr);//結果是arr:a,h,c,d,e
console.log("arr:"+brr);//結果是arr:a,h,c,d,e
js深度拷貝與淺度拷貝
如果你想真正自己理解和運用深度轉殖的話,首先必須要了解的就是js中的原始值和引用值,以及它們的儲存位置及方式。這裡簡單的說一下,原始值是儲存在棧裡的,而且儲存的是變數的實際值。引用值儲存在堆裡,且儲存的是乙個指標,該指標指向記憶體中的某個位置,該位置儲存變數的實際值。var a 2 var a co...
js深度拷貝和淺度拷貝的深入理解
首先我們來說說什麼是拷貝 就是複製的同時加上了傳值。然後問題就來了什麼是有深度的什麼是淺度的,在想要了解我們這個問題之前我們先來了解一下下面的乙個知識點 基本型別傳遞,引用型別傳遞 首先我們來看下基本型別傳遞 就是基本資料型別之間的資料傳遞,什麼是基本資料型別呢?string,number,bool...
List的深度copy和淺度拷貝
1 listlist arrays.aslist 2new student fndroid 22,student.sax.male,180 3new student jack 20,student.sax.male,170 4new student liliy 18,student.sax.fema...