前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue的浅拷贝和深拷贝场景

vue的浅拷贝和深拷贝场景

原创
作者头像
流年Felix
发布2023-08-09 13:24:22
3370
发布2023-08-09 13:24:22
举报
代码语言:javascript
复制
#浅拷贝:浅拷贝针对Object和Array这样的引用数据类型,就是原对象和拷贝后的对象 共同指向同一内存空间
,只要修改了对象的内容,两个对象的数据都会修改
#Object.assign是一种浅拷贝,下面的案例可以看到 把arr[0]拷贝给arr2,然后给arr2.list[0]重新赋值为999,
打印时会发现arr[0].list[0]的值也变为999
<script>
const arr = [
  { Name: '张三', list: [1, 2, 3] },
  { Name: '李四', list: [4, 5, 6] },
]

let arr2 = {
  Name: '',
  list: [],
}

Object.assign(arr2, arr[0])
arr2.list[0] = 999
console.log(arr)
console.log(arr2)
</script>

#打印的值为:
arr:[
  { Name: '张三', list: [999, 2, 3] },
  { Name: '李四', list: [4, 5, 6] },
]

arr2:
{ Name: '张三', list: [999, 2, 3] },

代码语言:javascript
复制
#深拷贝:会拷贝一份一样的对象,但是两个对象指向的内存空间不一样,修改数据不会影响另一个对象的数据
#通过JSON.parse(JSON.stringify()) 可实现深拷贝,案例中可以看到对arr2的修改就不会影响arr了
const arr = [
  { Name: '张三', list: [1, 2, 3] },
  { Name: '李四', list: [4, 5, 6] },
]

let arr2 = {
  Name: '',
  list: [],
}

Object.assign(arr2, JSON.parse(JSON.stringify(arr[0])))
arr2.list[0] = 999
console.log(arr)
console.log(arr2)

深拷贝
深拷贝

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档