所谓的同步,是指我在通过改变购物车里里面的商品数量时,原有的商品列表也跟着同步了,这一点让我很疑惑。代码如下:
shopcart.vue
selectFoods(){
let foods=[];
this.goods.forEach((good) => {
good.foods.forEach((food) => {
if(food.count){
foods.push(food)
}
})
})
我当时的理解是,我把原有的商品push进一个数组selectfood里面,那么按理来说,我操作的这一个数组里面的商品对象,应该是独立于原来的good,但是实际上是,我操作shopcart里面的商品可以直接影响到原来的good,原来的good也可以改变,为什么呢?
这是由于js复杂数据类型地址引用
参考地址 https://zhuanlan.zhihu.com/p/22400319
这里push到selectfood数组的是一个obj,obj属于复杂类型,复杂类型在拷贝值的时候是拷贝地址,因此在selectfood赋的值和good里面是一样的,引用的是内存地址,因此改变selectfood会同步改变good。