<p><strong>浅拷贝</strong>是指拷贝对象本身和第一层属性,而不拷贝嵌套在其内部的对象和数组。如果原始对象中的属性值为基本数据类型,则会被拷贝到新对象中,如果是对象或数组,则只会复制它们的引用。这意味着如果原始对象的属性值发生变化,拷贝后的对象的属性值也会随之变化,因为它们引用的是相同的内存空间。</p>
讯享网
深拷贝是指递归地拷贝所有嵌套在对象内部的对象和数组,直到所有属性值都是基本数据类型为止。这样,即使原始对象的属性值发生变化,拷贝后的对象的属性值也不会受到影响,因为它们引用的是不同的内存空间。
在 JS中,可以使用以下方法实现浅拷贝和深拷贝:
浅拷贝的几种常用方法::
1.使用Object.assign()方法
讯享网
2.使用数组的slice()方法
3.使用扩展运算符(…)
讯享网
4.使用cloneNode()方法(仅适用于对象字面量的浅拷贝)
需要注意的是,这些方法都不能处理函数、Symbol、包含循环引用的对象等。如果需要处理这些复杂情况,就需要使用深拷贝的方法
深拷贝的几种常用方法:
1.使用递归的方式进行对象(数组)的深拷贝
讯享网
2.使用lodash库中的方法进行深拷贝
3. 使用jQuery中的方法进行深拷贝
讯享网
4.使用JSON序列化和反序列化进行深拷贝
需要注意的是使用JSON序列化和反序列化进行深拷贝的方法只适用于对象中不包含函数、undefined、NaN、Infinity、-Infinity以及循环引用的情况

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/141022.html