js 复杂对象的复制

js 复杂对象的复制
测试代码:

      a={'a':1}    ;
      b=[];
      for(let i =0;i<2;i++){
            var e ; 
            a.a = (Math.random()*10).toFixed(2);
            e =JSON.parse(JSON.stringify(a));       //   深拷贝
            b.push(e);console.log(e,b);
      }
      $('body').append('
'+JSON.stringify(b)+'

');

对复杂对象(array/ object)直接赋值的行为属于浅拷贝, 对新对象进行修改会影响旧对象, 因为仅仅是对新对象的指针进行重定向, 指向相同内存地址

深拷贝 & 浅拷贝 的区别?
浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存

对复杂对象进行深拷贝?
代码:

var a = {name:'wanger'};
var b = Object.assign({}, a);

说明: 该Object.assign()方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象, 遇到重复属性源属性值覆盖原有的属性值

你可能感兴趣的:(js 复杂对象的复制)