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);

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

  • 相关阅读:
    vscode安装使用
    文本相似度编辑距离
    lstm有浅入深
    去除数组对象中重复的对象
    ANGULAR :NGIF 的ELSE用法
    数组中去除重复的对象的简单方法
    自然数e的野史来历和计算方法
    VSCode
    Ubuntu
    Ubuntu
  • 原文地址:https://www.cnblogs.com/rookieKong/p/12868482.html
Copyright © 2011-2022 走看看