es6对象展开符...使用注意【非深拷贝】

直接上代码了

对于只有一层的数据可用有效

   const bse = {
      a: 0
    }
    const arr1 = { ...bse }
    arr1.a = 1

    const arr2 = { ...bse }
    arr2.a = 2

    console.log( arr1,arr2)  // {a: 1}
    console.log( arr1,arr2)  // {a: 2}

对于多层的对象嵌套,不生效【浅拷贝】

    const bse = {
      a: 0,
      b: [{
        name: ''
      }]
    }
    const arr1 = { ...bse }
    arr1.a = 1
    arr1.b[0] = { name: 'aaa' }
    const arr2 = { ...bse }
    arr2.a = 2
    arr2.b[0] = { name: 'bbb' }
    console.log('arr1', arr1)
    console.log('arr2', arr2)

结果

 

会被第二次复制给覆盖了,所以需要深拷贝的不要这么用【坑!!】

 

 

 更详细的说法参考https://blog.csdn.net/qq_14993591/article/details/122279244

posted @ 2022-10-20 16:33  树叶铃铛  阅读(25)  评论(0编辑  收藏  举报