Object.assign是浅拷贝,仅复制对象第一层属性,对嵌套对象复制引用地址,导致原对象与新对象共享深层数据;深拷贝则递归复制所有层级,确保完全独立。

Object.assign 是浅拷贝,不是深拷贝。 它只复制对象第一层属性的值,遇到嵌套对象或数组时,复制的是引用地址,原对象和新对象仍共享同一份深层数据。
浅拷贝只复制对象顶层属性,对基本类型(string、number、boolean 等)是值拷贝;对引用类型(Object、Array、Date 等)是引用拷贝,即新旧对象指向同一内存地址。
深拷贝会递归复制所有层级,确保新对象与原对象完全独立,修改互不影响。
const deepCopy = structuredClone(obj);
比如:
立即学习“Java免费学习笔记(深入)”;
const obj = { a: 1, b: { c: 2 } };
const copy = Object.assign({}, obj);
copy.b.c = 3;
console.log(obj.b.c); // 输出 3 —— 原对象被意外修改了因为 b 是对象,Object.assign 只复制了它的引用,copy.b 和 obj.b 指向同一个对象。
{...obj} 或 Object.assign 就够了,轻量高效structuredClone
基本上就这些。深浅拷贝本质是“是否递归处理引用类型”,抓住这点,选哪种方式就很清楚了。
以上就是javascript深浅拷贝如何实现_Object.assign是深拷贝吗?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号