js深拷贝数组(js数组深拷贝和浅拷贝)

js深拷贝数组(js数组深拷贝和浅拷贝)div id navCategory div p 浅拷贝 创建一个新的对象 来接受重新复制或引用的对象值 如果对象属性是基本的数据类型 复制的就是基本类型的值给新对象 但如果属性是引用数据类型 复制的就是内存中的地址 如果其中一个对象改变了这个内存中的地址 会影响到另一个对象 因为两者共同指向同一个地址 p

大家好,我是讯享网,很高兴认识大家。



 <div id="navCategory"></div><p>浅拷贝:创建一个新的对象,来接受重新复制或引用的对象值。如果对象属性是基本的数据类型,复制的就是基本类型的值给新对象;但如果属性是引用数据类型,复制的就是内存中的地址,如果其中一个对象改变了这个内存中的地址,会影响到另一个对象,因为两者共同指向同一个地址。</p> 

讯享网

可用concat、slice返回一个新数组的特性来实现拷贝

浅拷贝,还可以用Object.assign()方法实现

但是如果数组嵌套了对象或者数组的话用concat、slice拷贝只要有修改会引起新旧数组都一起改变了,比如:


讯享网

下面是浅拷贝一个通用方法,实现思路:遍历对象,把属性和属性值都放在一个新的对象里

方法一:JSON.stringify()不仅可拷贝数组还能拷贝对象(但不能拷贝函数,也不能解决循环引用问题)

方法二:递归。下面是深拷贝一个通用方法,实现思路:拷贝的时候判断属性值的类型,如果是对象,继续递归调用深拷贝函数

其中上述方法一、方法二都解决不了循环引用的问题。
方法三,结合map(将方法二的递归改造,解决循环引用问题):

到此这篇关于js实现数组浅拷贝和深拷贝的文章就介绍到这了,更多相关js浅拷贝和深拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

小讯
上一篇 2025-04-23 12:54
下一篇 2025-05-04 17:31

相关推荐

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