深拷贝是指将一个对象完整地复制一份,包括其内部嵌套的对象。下面是一个手写的深拷贝函数:

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

这个函数首先判断传入的对象是否为 null 或者不是对象类型,如果是则直接返回该对象。然后判断该对象是否为数组类型,如果是则创建一个空数组,否则创建一个空对象。接着使用 for...in 循环遍历该对象的所有属性,如果该属性是该对象自身的属性,则将其值递归地传入 deepClone 函数进行深拷贝,并将其赋值给 clone 对象的相应属性。最后返回 clone 对象。

JavaScript 手写深拷贝函数实现详解

原文地址: https://www.cveoy.top/t/topic/lC8A 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录