【JS深拷贝】


 // 深拷贝
      let s = {
        name: "s",
        age: 18,
        friends: ["a", "b", "c"],
        address: {
          province: "湖北",
          city: "武汉",
        },
      };
      // 深拷贝
      function copy(a) {
        let obj = {};
        for (let k in a) {
          if (Array.isArray(a[k])) {
            // 使用 Array.isArray 判断数组
            obj[k] = a[k].map((item) => {
              return typeof item === "object" ? copy(item) : item;
            });
          } else if (typeof a[k] === "object" && a[k] !== null) {
            obj[k] = copy(a[k]);
          } else {
            obj[k] = a[k];
          }
        }
        return obj;
      }

      const s2 = copy(s);
      s2.name = "s2";
      s2.friends[0] = "d";
      s2.address.city = "襄阳";
      console.log(s);
      console.log(s2);




posted @ 2025-04-13 15:59  十三山入秋  阅读(4)  评论(0)    收藏  举报