目录
Object.assign
关于使用Object.assign复制时,对于引用类型里存放引用类型时,此时里面存放引用类型是浅复制。具体事例看测试:
var obj={a:1,b:{name:"cc"}}
var cloneObj=Object.assign({},obj);
obj.a=2;
cloneObj.a //1 对于基本数据类型则是深复制
obj.b.name="wcc";
cloneObj.b.name //wcc 对于引用类型则是浅复制(引用地址)
//数组
var arr=[1,{age:12}]
var cloneArr=Object.assign([],arr);
arr[0]=3;
cloneArr[0] //1
arr[1].age=15;
cloneArr[1].age //15
解决:
一、使用 JSON复制
var obj={a:1,b:{name:"cc"}}
var cloneObj=JSON.Stringify(obj)
cloneObj=JSON.Parse(cloneObj)
obj.b===cloneObj.b //false