假如源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。例如:
var arr = [a,b,{c:111}], var val={c:222} var copy = Object.assign(arr[2], val);
此时,arr [2].c 和 copy.c指向的还是一个同一个对象。
Object.assign()
只是一级属性复制,比浅拷贝多深拷贝了一层
标准(安全)JSON格式的对象深拷贝可以用这个: const arr = JSON.parse(JSON.stringify(val));
如果是单层操作,可以使用扩展运算
var copy = {...arr};
如果不用合并操作的话,可以直接使用字符串互转即可
var copy = JSON.parse(JSON.stringify(arr));