淺拷貝是指只是複製了存資料的位址,並沒有重新開闢資料,複雜的資料型別,比如object,array都是淺拷貝
var a=[1,2,3]
var b=a
console.log(a+'---'+b)
/** * 複製了a的
*/a[1] = 33
console.log(a+'---'+b)
如果a為基本資料型別,就是深拷貝,經過測試發現可以直接用var b=a
var a=22
var b=a
console.log(a+'---'+b)
/** * 如果a為乙個num型別
*/a = 33
console.log(a+'---'+b)
解決辦法:
1 使用json的方法
var a=[1,2,3]
//把陣列轉化為字串
var c = json.stringify(a)
//把字串轉化為陣列
var b=json.parse(c)
console.log(a+'---'+b)
a[1]=33
console.log(a+'---'+b)
2 使用遞迴拷貝
//遞迴拷貝的方法
3 使用es6的擴充套件運算子
var a =
var b=
console.log(a)
console.log(b)
/** * 複製了a的
*/a.z='123'
console.log(a)
console.log(b)
淺拷貝 深拷貝
copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...
深拷貝 淺拷貝
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...
淺拷貝 深拷貝
retain是建立乙個指標,引用物件計數加1。copy屬性表示兩個物件內容相同,新的物件retain為1 與舊有物件的引用計數無關,舊有物件沒有變化。copy減少物件對上下文的依賴。retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,re...