当前位置:   article > 正文

深拷贝和浅拷贝

深拷贝和浅拷贝

1. 基本数据类型都是深拷贝

基本类型存储在栈中,当拷贝时,会在栈中新开辟一个内存。

所以,当修改以前的值时,不会影响拷贝后的值。

2. 引用数据类型 

(1)引用数据类型是将对象的引用地址存储在栈中,将数据放在堆中的

(2)浅拷贝只是拷贝的地址,所以修改以前的数据,拷贝后的数据也会影响。

(3)深拷贝,把地址和值都拷贝了,所以拷贝后的值互不影响。

3. 浅拷贝方法

(1)直接赋值

(2)局部作用域直接使用全局作用域变量

4. 深拷贝方法

(1)JSON.parse(JSON.stringify(obj))

注意:当对象中的属性值为 undefined 时,在执行 JSON.stringify(obj) 时,这些属性会被忽略,因此最终的 JSON 字符串中不会包含这些属性。对象中的属性值为 null 没问题。

(2)递归

(3)使用Lodash库的_.cloneDeep()方法

5.  Object.assign() 和ES6 的扩展运算符(...)

使用Object.assign()和ES6 的扩展运算符(...)拷贝时,

如果拷贝的对象只有一层,则是深拷贝

如果多层,则是浅拷贝

6.总结 

(1)首先看类型是基本类型还是引用类型,如果是基本类型则就是深拷贝

(2)如果是引用类型,则根据拷贝的方法区分

7. 深拷贝的作用 

深拷贝可以保持数据独立性和完整性

(1)深拷贝创建的是一个完全独立的副本,所以不会影响原始数据

(2)可以避免意外修改原始数据,提高代码安全性和稳定性

(3)深拷贝后的副本可以独立使用和修改,可以实现代码复用和模块化开发

 参考链接:

1.  深拷贝和浅拷贝

2.  深拷贝作用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/733829?site
推荐阅读
相关标签
  

闽ICP备14008679号