Js中浅拷贝和深拷贝有什么区别,如何实现?

简介: 在 JavaScript 中,浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是两种常见的数据拷贝方式,它们的区别在于拷贝的程度

在 JavaScript 中,浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是两种常见的数据拷贝方式,它们的区别在于拷贝的程度。


  1. 浅拷贝:浅拷贝仅拷贝对象或数组的引用,而不是拷贝其内部的值。这意味着原始对象和拷贝后的对象会共享同一个内存地址,当其中一个对象修改了属性或元素时,另一个对象也会受到影响。


  1. 深拷贝:深拷贝会创建一个完全独立的对象或数组,并递归地拷贝其所有的属性或元素。这意味着原始对象和拷贝后的对象不共享内存地址,修改其中一个对象不会对另一个对象产生影响。


下面是一些常见的实现方法:


浅拷贝的实现方法:


  • 使用 Object.assign() 方法进行浅拷贝
  • 使用展开运算符进行浅拷贝


深拷贝的实现方法:


  • 使用 JSON.parse(JSON.stringify()) 进行深拷贝,但注意该方法有一些限制和注意事项(比如无法拷贝函数、循环引用会导致错误等)
  • 使用递归实现自定义的深拷贝函数
相关文章
|
5天前
|
JavaScript 前端开发
autox.js中if和while的用法区别和差异
autox.js中if和while的用法区别和差异
|
9天前
|
JavaScript API 索引
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
27 0
|
9天前
|
JSON JavaScript API
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
15 0
|
10天前
|
存储 JavaScript 前端开发
js【详解】数据类型原理(含变量赋值详解-浅拷贝)
js【详解】数据类型原理(含变量赋值详解-浅拷贝)
11 0
|
13天前
|
JavaScript
js【详解】深拷贝 (含 JSON.parse(JSON.stringify(obj)) 的缺陷,5种手写深拷贝)
js【详解】深拷贝 (含 JSON.parse(JSON.stringify(obj)) 的缺陷,5种手写深拷贝)
5 0
|
13天前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
15 0
|
14天前
|
存储 JavaScript 前端开发
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
8 0
|
2月前
|
JSON 前端开发 JavaScript
【面试题】JavaScript 深拷贝和浅拷贝 高级
【面试题】JavaScript 深拷贝和浅拷贝 高级
|
26天前
|
JSON JavaScript 前端开发
【JavaScript】JavaScript中的深拷贝与浅拷贝详解:基础概念与区别
JavaScript 中,理解数据拷贝的深浅至关重要。浅拷贝(如扩展运算符`...`、`Object.assign()`)仅复制对象第一层,共享内部引用,导致修改时产生意外联动。深拷贝(如自定义递归函数、`_.cloneDeep`或`JSON.parse(JSON.stringify())`)创建独立副本,确保数据隔离。选择哪种取决于性能、数据独立性和资源需求。深拷贝虽慢,但确保安全;浅拷贝快,但需小心引用共享。在面试中,理解这些概念及其应用场景是关键。
34 4
【JavaScript】JavaScript中的深拷贝与浅拷贝详解:基础概念与区别
|
2月前
|
JSON JavaScript 前端开发
总结JavaScript中的深拷贝与浅拷贝
总结JavaScript中的深拷贝与浅拷贝