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

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

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


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


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


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


浅拷贝的实现方法:


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


深拷贝的实现方法:


  • 使用 JSON.parse(JSON.stringify()) 进行深拷贝,但注意该方法有一些限制和注意事项(比如无法拷贝函数、循环引用会导致错误等)
  • 使用递归实现自定义的深拷贝函数
相关文章
|
1天前
|
前端开发 JavaScript
前端 JS 经典:typeof 和 instanceof 区别
前端 JS 经典:typeof 和 instanceof 区别
8 0
|
1天前
|
前端开发 JavaScript
前端 JS 经典:for-in 和 for-of 用法区别
前端 JS 经典:for-in 和 for-of 用法区别
8 0
|
4天前
|
前端开发 JavaScript
前端 JS 经典:i,i++,++i区别
前端 JS 经典:i,i++,++i区别
8 0
|
4天前
|
前端开发 JavaScript
前端 JS 经典:let、const、var 区别
前端 JS 经典:let、const、var 区别
6 0
|
4天前
|
缓存 JavaScript 前端开发
JavaScript:get和post的区别,2024年最新3-6岁儿童学习与发展指南心得体会
JavaScript:get和post的区别,2024年最新3-6岁儿童学习与发展指南心得体会
|
4天前
|
JSON 前端开发 JavaScript
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
|
4天前
|
JSON JavaScript 前端开发
【JavaScript】面试手撕深拷贝(1),面试前必看的一本书书籍是什么
【JavaScript】面试手撕深拷贝(1),面试前必看的一本书书籍是什么
|
6天前
|
JSON 前端开发 JavaScript
【面试题】JavaScript 深拷贝和浅拷贝 高级
【面试题】JavaScript 深拷贝和浅拷贝 高级
|
6月前
|
存储 JSON JavaScript
JavaScript深拷贝与浅拷贝
JavaScript深拷贝与浅拷贝
24 0
|
7月前
|
存储 JavaScript 前端开发
带你读《现代Javascript高级教程》十七、JavaScript深拷贝与浅拷贝(1)
带你读《现代Javascript高级教程》十七、JavaScript深拷贝与浅拷贝(1)