乐趣区

关于javascript:js手写deepClone深拷贝

背景

理论开发中,解决数据常常会应用到数据拷贝。其实应用 JSON.stringify() 与 JSON.parse() 来实现深拷贝是很不错的抉择。

然而当拷贝的数据为 undefined,function(){} 等时拷贝会为空,这时就须要采纳递归拷贝。

应用 JSON 实现拷贝时,留神拷贝数据,看是否适宜应用。

以下是手写简略深拷贝

代码

/**
 * @param obj
 * @description 深拷贝
 */
export const deepClone = (obj: any) => {
  // 判断是否须要递归
  if (typeof obj !== 'object' || obj == null) {return obj;}
  let result: any;
  if (obj instanceof Array) {result = [];
  } else {result = {};
  }
  for (let key in obj) {if (obj.hasOwnProperty(key)) {result[key] = deepClone(obj[key]);
    }
  }
  return result;
};

export default deepClone;
退出移动版