赞
踩
基本类型存储在栈中,当拷贝时,会在栈中新开辟一个内存。
所以,当修改以前的值时,不会影响拷贝后的值。
(1)引用数据类型是将对象的引用地址存储在栈中,将数据放在堆中的。
(2)浅拷贝,只是拷贝的地址,所以修改以前的数据,拷贝后的数据也会影响。
(3)深拷贝,把地址和值都拷贝了,所以拷贝后的值互不影响。
(1)直接赋值
(2)局部作用域直接使用全局作用域变量
(1)JSON.parse(JSON.stringify(obj))
注意:当对象中的属性值为
undefined
时,在执行JSON.stringify(obj)
时,这些属性会被忽略,因此最终的 JSON 字符串中不会包含这些属性。对象中的属性值为 null 没问题。(2)递归
(3)使用Lodash库的_.cloneDeep()方法
使用Object.assign()和ES6 的扩展运算符(...)拷贝时,
如果拷贝的对象只有一层,则是深拷贝,
如果多层,则是浅拷贝。
(1)首先看类型是基本类型还是引用类型,如果是基本类型则就是深拷贝
(2)如果是引用类型,则根据拷贝的方法区分
深拷贝可以保持数据独立性和完整性。
(1)深拷贝创建的是一个完全独立的副本,所以不会影响原始数据
(2)可以避免意外修改原始数据,提高代码安全性和稳定性
(3)深拷贝后的副本可以独立使用和修改,可以实现代码复用和模块化开发
参考链接:
1. 深拷贝和浅拷贝
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。