2025年js深拷贝和浅拷贝的区别简书(js深拷贝和浅拷贝如何实现)

js深拷贝和浅拷贝的区别简书(js深拷贝和浅拷贝如何实现)1 for in 只循环第一层 2 Object assign 方法 3 直接用 赋值 1 采用递归去拷贝所有层级属性 结果 2 通过 JSON 对象来实现深拷贝 缺点 无法实现对对象中方法的深拷贝 会显示为 undefined 3 通过 jQuery 的 extend 方法实现深拷贝 4 lodash 函数库实现深拷贝 5 Reflect 法 6 手动实现深拷贝

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


讯享网

(1)for···in只循环第一层

(2)Object.assign方法

(3)直接用=赋值

(1)采用递归去拷贝所有层级属性

结果:

(2) 通过JSON对象来实现深拷贝

缺点: 无法实现对对象中方法的深拷贝,会显示为undefined

(3)通过jQuery的extend方法实现深拷贝

(4)lodash函数库实现深拷贝

(5)Reflect法

(6)手动实现深拷贝

(7)如果对象的value是基本类型的话,也可以用Object.assign来实现深拷贝,但是要把它赋值给一个空对象

对于Object.assign()而言,如果对象的属性值为简单类型(string,number),通过得到的新对象为深拷贝;如果属性值为对象或其他引用类型,那对于这个对象而言其实是浅拷贝的

对于src1和src2之间相同的属性是直接覆盖的,如果属性值为对象,是不会对对象直接的属性进行合并的。

Object.assign不会在那些源对象值为null或undefined的时候抛出错误。

(16条消息) Object.assign()到底是浅拷贝还是深拷贝?【Object.assign()的用法】_object.assign()的用法 深拷贝_你好像很好吃a的博客-CSDN博客

(8)用slice实现对数组的深拷贝

(9)用concat实现对数组的深拷贝

(10)直接使用var newObj = Object.create(oldObj),可以达到深拷贝的效果。

(11)使用扩展运算符实现深拷贝

 

小讯
上一篇 2025-04-14 08:43
下一篇 2025-05-07 22:13

相关推荐

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