js浅拷贝和深拷贝的区别
时间: 2023-10-24 21:26:47 浏览: 107
js中的深拷贝和浅拷贝总结
5星 · 资源好评率100%
浅拷贝和深拷贝是在JavaScript中用于复制对象或数组的两种不同方法。其区别在于复制后的对象或数组是否与原始对象或数组共享相同的内存空间。
浅拷贝只会复制原始对象或数组中的值的引用,而不会创建新的内存空间。换句话说,浅拷贝只复制了栈内存中的数据地址。因此,当修改原始对象或数组时,复制后的对象或数组也会发生改变。这种拷贝方法有点类似于拿人手短。
深拷贝则会在内存中重新开辟一段新的存储空间,使得复制后的对象或数组指向两个不同的堆内存数据。因此,当修改原始对象或数组时,复制后的对象或数组不会受到影响。这种拷贝方法可以说是自食其力。
可以通过一些方法来区分浅拷贝和深拷贝。例如,假设B复制了A,当修改A时,观察B是否会发生变化。如果B也跟着变了,那么这是浅拷贝;如果B没有变化,那么这是深拷贝。
总结一下,浅拷贝只拷贝了复杂数据类型在栈内存中的地址,而深拷贝会在堆内存中重新生成一块新的存储空间,实现完完全全的对象或数组复制。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [深拷贝和浅拷贝的区别(javascript篇)](https://blog.csdn.net/qq_48637854/article/details/124982976)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [js浅拷贝与深拷贝的区别和实现方式](https://blog.csdn.net/weixin_30388677/article/details/100091271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文