vueお腹すいたかwebappのショッピングカートと商品リストが同期

708 ワード

シンクロとは、私がカートの中の商品の数を変えることで、既存の商品リストもシンクロしたことを疑問に思っています.コードは次のとおりです.
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が同期して変更される.