首页 > 技术文章 > JavaScript深拷贝

yanchenyu 2018-07-30 10:15 原文

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

推荐阅读