(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)使用扩展运算符实现深拷贝
到此这篇js深拷贝和浅拷贝的区别简书(js深拷贝和浅拷贝如何实现)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdvuejs/26263.html