js 解决引用赋值导致修改新数组(对象)导致原数组(对象)跟着改变的问题
原因:JavaScript 中对象的赋值是默认引用赋值的(两个对象指向相同的内存地址)
解决方案1:
用 JSON.stringify 把对象转换成字符串,再用 JSON.parse 把字符串转换成新的对象
function deepClone(obj){ return JSON.parse(JSON.stringify(obj)); }
解决方案2:
Object.assign()拷贝
当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。
let obj1 = {'name': 'hello world'}; let obj2 = Object.assign({},obj1); let arr1 = [1,2,3,4,5]; let arr2 = Object.assign([],arr1);