前景:之前接触到深拷贝浅拷贝的时候,还是不太能够实际感受,最近在写项目中遇到了一个这种问题,浅显记录下。感觉还有很多场景会遇到,但是对这个的了解目前还不够成熟。 最近是在写到一个弹框的时候,传递了一个数组对象过去,在弹框进行回显,还可以进行修改,之前写的时候单纯想到回显传值,没多做考虑。。。
弹框中接收的数组对象为:platArr
,传递过去的数组对象为otherBillInfoList
👇为:之前的错误处理接收数据,没有考虑到这里是引用数据类型,发生变化的一个数组会影响到另外的一个数组,这里接收的是同一个地址,引用传递的时候得考虑深拷贝。
this.platArr = otherBillInfoList.filter(val => {
return { partakeName: val.partakeName, partakeIncome: val.partakeIncome }
})
这里主要感觉还是在基础js的应用上不够敏感和思考不够,还是得多踩坑长记性了😂
最后用了一个查到的方式:JSON.parse(JSON.stringify(XXX))
。在这里修改了一下,目前看实现是可以的。(这里是数组对象,有人说这个方法会丢失函数,这里留一个问题给我自己,之后遇到再完善记录
platArr = JSON.parse(JSON.stringify(otherBillInfoList)); //深拷贝 - 其他方
相关知识-参考:
一些数组方法等等,深拷贝浅拷贝知识等等,之后继续学习。
- 知乎《 javascript中的深拷贝和浅拷贝?》 https://www.zhihu.com/question/23031215
- 阮一峰 《ECMASript6入门》https://es6.ruanyifeng.com/