深拷贝和浅拷贝的区别

 我来答
迷丝2
2022-06-23 · TA获得超过5468个赞
知道答主
回答量:918
采纳率:27%
帮助的人:18.9万
展开全部

一、概念

1、浅拷贝

浅拷贝只复制某个对象的引用,而不复制对象本身,新旧对象还是共享同一块内存

2、深拷贝

深拷贝会创造一个一摸一样的对象,新对象和原对象不共享内存,修改新对象不会改变原对对象。

二、方法

1、浅拷贝

a、Object.assign()

Object.assign()方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。Object.assign()拷贝的是对象的属性的引用,而不是对象本身。

2、深拷贝

a、JSON转换

let newObj = JSON.parse(JSON.stringify(obj))。

缺点:

1) 如果对象有函数,函数无法被拷贝下来

2)无法拷贝对象原型链上的属性和方法

3)当数据的层次很深,会栈溢出

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式