前言本文分析了javascript开发中经常遇到的浅拷贝和深拷贝,总结了网上的各种实现方法,希望对大家有所帮助。什么是浅拷贝和深拷贝?先说说Javascript的数据类型?基本类型:数字(Number)字符类型(String)布尔类型(Boolean)NullUndefinedSymbol引用类型:对象类型(Object)数组类型(Array)函数类型(Function)正则类型(Regex)日期类型(Date)浅拷贝定义:浅拷贝其实只拷贝值类型,引用类型也可以拷贝过去,但是拷贝的是引用类型的指针地址。如果后面修改了,影响的是双方,而不是真正的副本,所以存在父对象被篡改的可能性。深拷贝定义:深拷贝不仅拷贝了值类型,还拷贝了引用类型,但引用类型的指针地址独立存在,互不影响。了解了深拷贝和浅拷贝的定义之后,我们来说说如何实现。?实现浅拷贝数组:[...][].slice()[].splice(0)Array.from()对象:{...}Object.assign({},a)数组和对象都可用适用于lodash包中的clone()方法,实现深拷贝。数组和对象都适用JSON.parse(JSON.stringify())缺点:未定义和函数类型的递归方法(遍历)不能复制。缺点:无法解决循环引用问题jquery的$.extend()方法npmlodash包中的cloneDeep()方法(推荐)总结1.了解什么是浅拷贝和深拷贝以及区别,然后找到基于理解的解决方案和实施方法。参考js对象浅拷贝和深拷贝详解how-do-i-deep-clone-an-object-in-reactlodashcloneDeep
