前景:之前接觸到深拷貝淺拷貝的時候,還是不太能夠?qū)嶋H感受,最近在寫項(xiàng)目中遇到了一個這種問題,淺顯記錄下。感覺還有很多場景會遇到,但是對這個的了解目前還不夠成熟。 最近是在寫到一個彈框的時候,傳遞了一個數(shù)組對象過去,在彈框進(jìn)行回顯,還可以進(jìn)行修改,之前寫的時候單純想到回顯傳值,沒多做考慮。。。
彈框中接收的數(shù)組對象為:platArr,傳遞過去的數(shù)組對象為otherBillInfoList
??為:之前的錯誤處理接收數(shù)據(jù),沒有考慮到這里是引用數(shù)據(jù)類型,發(fā)生變化的一個數(shù)組會影響到另外的一個數(shù)組,這里接收的是同一個地址,引用傳遞的時候得考慮深拷貝。
this.platArr = otherBillInfoList.filter(val => {
return { partakeName: val.partakeName, partakeIncome: val.partakeIncome }
})
這里主要感覺還是在基礎(chǔ)js的應(yīng)用上不夠敏感和思考不夠,還是得多踩坑長記性了??
最后用了一個查到的方式:JSON.parse(JSON.stringify(XXX))。在這里修改了一下,目前看實(shí)現(xiàn)是可以的。(這里是數(shù)組對象,有人說這個方法會丟失函數(shù),這里留一個問題給我自己,之后遇到再完善記錄
platArr = JSON.parse(JSON.stringify(otherBillInfoList)); //深拷貝 - 其他方
相關(guān)知識-參考:
一些數(shù)組方法等等,深拷貝淺拷貝知識等等,之后繼續(xù)學(xué)習(xí)。
- 知乎《 javascript中的深拷貝和淺拷貝?》 https://www.zhihu.com/question/23031215
- 阮一峰 《ECMASript6入門》https://es6.ruanyifeng.com/