浅拷贝
Object.assign() //es6的方法
Object.assign会合并对象生成一个新对象。如果对象的属性是普通类型改变之后新对象不会改变,如果是引用类型改变后新对象也会改变,所以Object.assign实际上还是浅拷贝。
// assign浅拷贝
// var obj = { obj1: { a: “hahahahaha”, b: 39 } };
// var obj1v =
// Object.assign({}, obj);
// obj1v.obj1.a = “gagagagagagaga”;
// console.log(obj.obj1.a);
// concat
// let arr = [1, 3, { username: 'AAA' }];
// let arr2 = arr.concat();
// arr2[2].username = 'songzijun';
// console.log(arr);
Array.prototype.slice()
let arr = [1, 3, { username: ' songzijun' }];
let arr2 = arr.slice();
arr2[2].username = 'aaa'
console.log(arr);
###深拷贝
JSON.parse(JSON.stringify(obj))
利用JSON.stringify(obj)将对象先转为json字符串,再JSON.parse()转回为json对象可以实现深拷贝,这也是比较常用的一种方法。
let arr = [1, 3, { username: ’ SONGZIJUN’ }];
let arr2 = JSON.parse(JSON.stringify(arr));
arr2[2].username = ‘aaaa’;
console.log(arr, arr2)