普通的 變量賦值一般都是淺拷貝,類(lèi)似于java指針的概念
let a = 1;
let b = a;
對(duì)b來(lái)說(shuō)就是淺拷貝。
還有一個(gè)問(wèn)題估計(jì)前端小伙伴經(jīng)常遇到
data(){
return {
list:[1,2,3]
}
}
當(dāng)你在方法中去需要接收這個(gè)list去處理一些業(yè)務(wù),但是又不想影響到原數(shù)據(jù)。
let item = this.list[0]
if(item){
item = 0
}
這個(gè)時(shí)候,你說(shuō) this.list[0] 是多少?是1還是0 ?
上面就是淺拷貝。
想要避免這種問(wèn)題影響到主體的處理,利用深拷貝,直接
let item = JSON.pase(JSON.stringIfy(this.list[0]))
這樣,你怎么處理item都不會(huì)影響到原數(shù)據(jù)結(jié)構(gòu)。淺拷貝就是你,深拷貝就是另一個(gè)你,和你沒(méi)任何關(guān)系,除了一模一樣外。