JavaScript 深拷贝实现:复制所有数据类型

本文提供一个 JavaScript 深拷贝函数,可以复制包括对象、数组、日期、正则表达式等所有数据类型。示例代码展示了函数的实现和使用方法。

深拷贝函数

function deepCopy(obj) {
  // 确定obj的类型
  let type = Object.prototype.toString.call(obj).slice(8, -1);

  // 根据类型分别处理
  switch (type) {
    case 'Object':
      let newObj = {};
      for (let key in obj) {
        newObj[key] = deepCopy(obj[key]);
      }
      return newObj;
    case 'Array':
      return obj.map((item) => deepCopy(item));
    case 'Date':
      return new Date(obj);
    case 'RegExp':
      return new RegExp(obj.source, obj.flags);
    default:
      return obj;
  }
}

使用示例

let obj = {
  a: 1,
  b: '2',
  c: [3, 4],
  d: { e: '5', f: [6, 7] },
  g: new Date(),
  h: /abc/gi,
};

let newObj = deepCopy(obj);
console.log(newObj); // {a: 1, b: '2', c: Array(2), d: {…}, g: Date, …}

该函数通过递归的方式遍历所有数据类型,并根据类型进行不同的处理,从而实现深拷贝。使用示例展示了如何使用该函数对包含各种数据类型的对象进行深拷贝。

JavaScript 深拷贝实现:复制所有数据类型

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

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