首先:再記錄一下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 ...