JavaScript深拷贝

拷贝之后的数据发生了改变不会影响到被拷贝的数据

// 判断数据是否是一个对象类型
const isObj = (obj) => typeof obj === "object" && obj !== null;

const deepClone = (obj) => {
// 根据被拷贝的数据类型来创建数据类型
  const newObj = obj instanceof Array ? [] : {};

// 进行遍历获取每一次的key
  for (const item in obj) {

// 使用一个临时变量来进行接收
    const temp = obj[item];

// 判断临时变量是否是一个对象类型,如果是就继续调用deepClone函数
    newObj[item] = isObj(temp) ? deepClone(temp) : temp;
  }
  return newObj;
};

const arr = [1, 2, 3];
const newArr = deepClone(arr);

console.log(arr, newArr); // [1,2,3] [1,2,3]

newArr[0] = 0;

console.log(arr, newArr); // [1,2,3] [0,2,3]

不二
4 声望0 粉丝