一、JSON方法实现
(1)使用JSON.stringify将对象转换为json字符串形式,然后用JSON.parse将转换而来的字符串转换为原生js对象并赋值给另一个变量。
(2)缺陷:取不到值为 undefined 的 key;如果对象里有函数,函数无法被拷贝下来;无法拷贝Obj对象原型链上的属性和方法。
二、递归函数
使用递归的方式实现数组、对象的深拷贝
三、第三方库
(1)使用第三方库lodash中cloneDeep()方法
(2)lodash.cloneDeep()方法底层使用的本来就是递归方法。只是在外层又封装了一层cloneDeep的主体函数baseClone。
(3)如果不是原先项目中有使用 lodash 这个库的话,大可不必为了这一个功能而去引入它。不如写一个递归函数对于项目来说性能更好