zoukankan      html  css  js  c++  java
  • JavaScript Object的复制

     1         var obj = {
     2             a: 1,
     3             b: 2,
     4             c: {
     5                 d: 3,
     6                 e: 4,
     7                 f: function () {
     8                     console.log("对象复制");
     9                 }
    10             }
    11         }    

    1. for in遍历复制(浅复制)

    1         var o = {};
    2         for (var prop in obj) {
    3             o[prop] = obj[prop];
    4         }
    5         obj.a = 10;
    6         obj.c.d = 10;
    7         console.log(o);

    for in是一种浅复制 

      对象o  浅层的属性不会随着obj 浅层属性的改变而改变,但是深层会  

      obj.c.d = 10;   将obj.c.d 的值改为10   对象o 对应的值也会改变

    2. 使用展开运算符 "..." 复制(浅复制)

    1         var o={...obj};
    2         obj.c.d=10;
    3         console.log(o);

      这种复制方法 也是一种浅复制

    3.Object.assign()方法复制(浅复制)

    1         var o = Object.assign({}, obj);
    2         obj.c.d = 10;
    3         console.log(o);

    4.JSON方法复制(可完成深复制)

      将对象转换为JSON字符串,将JSON字符串还原为对象赋值

    1         var o=JSON.parse(JSON.stringify(obj));
    2         obj.c.d=10;
    3         console.log(o);

    虽然可以完成深复制,但是不可枚举属性和方法都无法进行复制

  • 相关阅读:
    6554545555
    484844
    学习资料整理
    word加上尾注之后参考文献下面的横线去除
    数据结构+算法
    python编程
    计算机网络(1)
    数据结构
    数据分析笔试(3)
    数据分析笔试(2)
  • 原文地址:https://www.cnblogs.com/rookieKong/p/12868482.html
Copyright © 2011-2022 走看看