深拷贝实现方式

发布时间 2024-01-04 13:51:20作者: 翰翰翰、

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

let obj = {a: 1, b: {c: 2}}; let newObj = JSON.parse(JSON.stringify(obj)); 这种方法的优点是简单易用,代码量少。但是它有一些限制: 不能复制函数、正则表达式等特殊对象; 不能处理循环引用的情况; 不能处理Date对象;

2.递归实现

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

这种方法的优点是可以处理复杂对象,但是它也有一些限制:

  • 不能处理循环引用的情况;
  • 对于一些特殊对象,例如Date对象,需要特殊处理。