為什麼會用到淺拷貝和深拷貝

2021-08-16 18:07:49 字數 1011 閱讀 9948

let a = b = 2

a = 3

console.log(a)

console.log(b)

let c = d = [1,2,3]

let e = f =

c[0] = 2

e.a = 2

console.log(d[0])

console.log(f.a)

拷貝(分為深淺兩種)

淺拷貝有效性針對的是單一層級物件[1,2,3]或者

深拷貝有效性針對的是單層或者多層級物件[1,2,3]或者或者[1,[1],]或者}

// 陣列

let a = [1,2]

let b = a.slice()

// {}

let e = ,2}

let f = object.create(e)

function

shallowcopy (obj) else

object.keys(obj).foreach((item,i) = > )

return result

}} else

}

vue的mixin是淺拷貝的一種複雜型式

// 利用json(它能正確處理的物件是number, string, boolean, array, 扁平物件)

let g = json.parse(json.stringify(obj))

// 適用於

function

deepcopy (obj) else

} else

}objkeys.foreach((item) =>

} else

})return result

} else

}

對深拷貝的應用想法

深拷貝和淺拷貝

淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝,如 class a a private int data int main 這一句b a 就是淺拷貝,執行完這句後b.data 5 如果物件中沒有其他...

淺拷貝和深拷貝

以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 例如 已知class a,class b void func a a void func a a func b b 此時函式對b的操作是呼叫拷貝建構函式後的臨時拷貝物件。多數傳指標 乙個物件以值傳遞的方式從函式返回 如 return b...

深拷貝和淺拷貝

ios提供了copy和mutablecopy方法,顧名思義,copy就是複製了乙個imutable的物件,而mutablecopy就是複製了乙個mutable的物件。以下將舉幾個例子來說明。1 系統的非容器類物件 這裡指的是nsstring nsnumber等等一類的物件。nsstring stri...