JavaScript深拷贝

1,JSON.parse(JSON.stringify(obj))

使用JSON实现深拷贝必须要求对象是符合JSON安全的,不了解JSON安全的自行百度。

2,lodash/underscore  _.cloneDeep()

不错

3,immutable.js  fromJS()

性能最差

4,自己写一个:

function deepClone(obj) {
   var copyObj = Array.isArray(obj) ? [] : {};  // 先判断深拷贝的是对象还是数组

   if (obj && typeof obj === 'object') {

        for (var key in obj) {
         
        
        // for in 会遍历所有可枚举属性,无论它是否是对象自身属性或者是继承原型对象的属性,因此需要过滤一下 if (obj.hasOwnProperty(key)) { if (obj[key] && typeof obj[key] === 'object') { copyObj[key] = deepClone(obj[key]); } else { copyObj[key] = obj[key]; } } } } return copyObj }

  

end

原文地址:https://www.cnblogs.com/yanchenyu/p/9389152.html