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

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

  • 相关阅读:
    微信端支付
    flex布局
    最近的一些计划
    工作中遇到的一些小问题
    获取url参数
    localStorage中使用json
    倒计时函数(单个和多条)
    刚进入页面强制刷新
    [模板][倍增] ST算法 RMQ 区间中最大得值
    [思维]奇数码问题
  • 原文地址:https://www.cnblogs.com/rookieKong/p/12868482.html
Copyright © 2011-2022 走看看