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