版权声明:版权声明:本文为博主原创文章,若文章中有错误请联系博主改正,请不要恶意留言(不喜欢请绕道)。欢迎大家转载 https://blog.csdn.net/qq_37674616/article/details/83578003
目录
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
二、loadsh的深复制
var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
三、使用 Jquery中 extend
var obj={a:1,b:{name:"cc"}}
var cloneObj=$.extend(true,{},obj);
obj.b===cloneObj.b //false
以上是在项目中碰到的问题,与解决方案...fighting