跳转到内容
返回

关于js深拷贝

开头

面试复习,复习到了深拷贝,记录一下

正文

基本数据类型&复杂数据类型(引用数据类型)

概念

深拷贝

作用与复制复杂数据类型时,因为栈中只保存了数据的地址,所以如果只是简单赋值一样的复制,就会出现如下情况(浅拷贝)

let one = {
  one: "this is one",
};
let two = one;
console.log(two); // {one:"this is one"}
one.one = 1;
console.log(two); // {one:1}

深拷贝实现

思路

let deepCopy = copyTarget => {
  let res = null;
  // 返回和复制对象一致的类型
  if (copyTarget instanceof Array) {
    res = [];
  } else {
    res = {};
  }
  for (let key in copyTarget) {
    if (typeof copyTarget[key] === "object" && copyTarget[key] !== null) {
      // 1.复杂数据类型
      console.warn("复杂数据类型");
      res[key] = deepCopy(copyTarget[key]);
    } else {
      console.warn("基本数据类型");
      // 2.基本数据类型/和函数
      res[key] = copyTarget[key];
    }
  }
  return res;
};


上一篇
熟悉小程序开发目录
下一篇
《学习JavaScript数据结构与算法》笔记---队列
×