美文网首页
前端面试js篇:利用js实现深拷贝

前端面试js篇:利用js实现深拷贝

作者: 5cc9c8608284 | 来源:发表于2024-03-28 09:35 被阅读0次
function deepCopy(obj) {
  // 如果不是对象,则直接返回
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }

  // 处理Date, RegExp, Function等特殊类型
  if (obj instanceof Date) {
    return new Date(obj);
  }
  if (obj instanceof RegExp) {
    return new RegExp(obj);
  }
  if (typeof obj.clone === 'function') {
    // 如果对象有clone方法,尝试调用该方法进行克隆
    return obj.clone();
  }

  // 创建目标对象实例
  let cloneTarget;
  if (Array.isArray(obj)) {
    cloneTarget = [];
  } else {
    cloneTarget = {};
  }

  // 遍历对象的每个属性
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      // 递归复制属性
      cloneTarget[key] = deepCopy(obj[key]);
    }
  }

  // 返回复制后的对象
  return cloneTarget;
}

// 使用示例
const originalObj = {
  a: 1,
  b: {
    c: 2,
    d: [3, 4]
  },
  e: new Date(),
  f: function() { console.log('hello'); }
};

const copiedObj = deepCopy(originalObj);
console.log(copiedObj===originalObj,'copiedObj');

相关文章

  • js浅拷贝深拷贝

    js浅拷贝,深拷贝的简单实现 基础数据 浅拷贝 深拷贝

  • js-xlsx工具类库 xlsxUtils 使用示例

    js-xlsx相关教程:纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例纯前端利用 js-xls...

  • JS 中深拷贝的几种实现方法

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 方法二 2、通过 JSON 对象实现深拷贝 缺点 (1...

  • Javascript中的深拷贝

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 //使用递归的方式实现数组、对象的深拷贝 functi...

  • 纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示

    相关教程:纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例(2)纯前端利用 js-xlsx(3)...

  • JS中的深拷贝与浅拷贝

    知乎:js中的深拷贝和浅拷贝? 掘金: js 深拷贝 vs 浅拷贝 前言 首先深拷贝与浅拷贝只针对 Object,...

  • JS深拷贝的实现

    JS深拷贝, 即传值拷贝, 需要新建一处内存,实现拷贝,具体实现如下: //ES5深拷贝 (1)循环递归: fun...

  • 手写实现深度拷贝

    手写实现深度拷贝 本文参考:面试题之如何实现一个深拷贝 基础理论 拷贝的基础是赋值,在 js 中,将一个变量赋值给...

  • js 实现深拷贝

    一般不会深拷贝函数等,所以一般用递归和JSON方法即可。 如果要实现函数等拷贝,比较完美的做法: function...

  • js实现深拷贝

    一、js数据类型 基本数据类型:String、Number、Boolean、Null、Undefined复杂数据类...

网友评论

      本文标题:前端面试js篇:利用js实现深拷贝

      本文链接:https://www.haomeiwen.com/subject/azmstjtx.html