JS实现深拷贝的几种方法

一、使用 JSON 转换

这是最简单的方法。

JSON.parse(JSON.stringify(obj))

二、使用递归

通过递归的方式深度遍历对象,将每个属性的值进行复制。需要处理被复制对象为值类型的情况以及属性值中包含对象的情况。需要注意的是,为了防止循环引用导致死循环,需要记录已经遍历过的对象。

const deepClone = obj => {
    
    
  if (typeof obj !== 'object' || obj === null) {
    
    
    return obj;
  }
  let result = Array.isArray(obj) ? [] : {
    
    };
  for (let key in obj) {
    
    
    if (obj.hasOwnProperty(key)) {
    
    
      result[key] = deepClone(obj[key]);
    }
  }
  return result;
}

三、借助插件

Lodash

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。

npm i --save lodash
import {
    
    cloneDeep} from 'lodash';
const obj1 = {
    
    a: {
    
    b: 2}};
const obj2 = cloneDeep(obj1);

END

猜你喜欢

转载自blog.csdn.net/m0_53808238/article/details/130903197