js中引用資料型別的深拷貝

2021-09-11 08:22:57 字數 655 閱讀 1033

首先:再記錄一下js中的資料型別;

基本型別:number string boolean null undefined

引用型別:object(function(不在此次的考慮範圍內),array,object)

es6中新加了乙個symbol,至今沒在案例中使用過,所以就提一下,有興趣的可以自己去看一下特性和用法;

參考鏈結

關於為什麼引用型別會有深拷貝一說,請各位移步上面鏈結看詳細原因

function deepclone(obj);

for(key in obj)

newobj[key] = obj[key]

} return newobj;

}分別使用下面的兩個變數進行測試發現可以實現深拷貝

var arr = [1,2,3]

var obj =

}

下面這個方法是在上面的鏈結內學到的,簡直犯規啊這種方法

利用json.stringify(obj) 先將引用型別轉為基本型別,

再複製,媽耶,太犯規了

最後利用json.parse()將複製到的基本型別轉為引用型別;

實測很多都有效,太激動了.

引用資料型別的淺拷貝與深拷貝

基本的資料型別可以分為兩類 基本資料型別 值型別 數字 字串 布林值 undefined null 引用資料型別 引用型別 函式 陣列 物件 只有複雜資料型別 引用資料型別 才有淺拷貝與深拷貝 基本資料型別資料傳遞後,在改變源資料後面不會改變 基本資料型別存的是值 引用資料型別存的是位址 引用資料型...

引用資料型別中淺拷貝與深拷貝的區別

淺拷貝直接賦值賦值的是記憶體位址,賦值之後兩個變數使用的相同內容,兩個變數中儲存的是相同的記憶體位址,乙個操作,另乙個也會改變。arr1 變數中 儲存的是 陣列的 記憶體位址 var arr1 1,2,3,4,5 將arr1 儲存的記憶體位址,賦值給arr2,兩個變數儲存的是相同的記憶體位址 var...

js資料型別賦值,淺拷貝,深拷貝

直接上 是我的風格基本資料型別的賦值 var a 10 var b a b 24 console.log a 10 a不受b的影響。console.log b 24 基本資料型別賦值時。是copy乙份10的值。當b 24時。a不受b的影響。複製 複雜資料型別的賦值 var obj var obj1 ...