vue中深拷贝浅拷贝实际测试

单层的使用{...}和Object.assign
复杂的对象使用

JSON.parse(JSON.stringify(........))

 

export default {
  name: 'HelloWorld',
  data () {
    return {
      a: '',
      b: '',
      c: ''
    }
  },
  methods: {
    test1 () {
      const a = { aa: '11' }
      this.a = a
      a.aa = 'cc' // 一起变了
    },
    test2 () {
      const b = { bb: '11' }
      this.b = JSON.parse(JSON.stringify(b))
      b.bb = 'bcc' // 没有一起变
    },
    test3 () {
      const c = { cc: '11', ca: [{ aa: '11' }] }
      this.c = { ...c }
      c.cc = 'ccc' // 这个值没有变
      c.ca[0].aa = 'caa' // 这个值一起变了
    },
    test4 () {
      const c = { cc: '11', ca: [{ aa: '11' }] }
      this.c = JSON.parse(JSON.stringify(c))
      c.cc = 'ccc' // 没有一起变
      c.ca[0].aa = 'caa' // 没有一起变
    },
    test5 () {
      const c = { cc: '11', ca: [{ aa: '11' }] }
      this.c = Object.assign({}, c)
      c.cc = 'ccc' // 这个值没有变
      c.ca[0].aa = 'caa' // 这个值一起变了
    }
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值