Object.assign({}, obj, obj2)
是使用 Object.assign()
方法来合并对象的一种常见方式,但它并不属于深拷贝。
Object.assign()
方法用于将一个或多个源对象的属性复制到目标对象,并返回目标对象。当目标对象和源对象具有相同的属性时,后面的源对象将覆盖前面的源对象的属性。
虽然 Object.assign()
可以复制对象的属性,但它只能进行浅拷贝(shallow copy)。这意味着如果对象中的属性是对象或数组,那么拷贝的只是引用,而不是创建新的对象。因此,对于嵌套的对象或数组,更改拷贝后的对象会影响原始对象。
示例:
const obj = { a: 1, b: { c: 2 } };
const clonedObj = Object.assign({}, obj);
clonedObj.b.c = 3;
console.log(obj); // { a: 1, b: { c: 3 } }
console.log(clonedObj); // { a: 1, b: { c: 3 } }
在上面的示例中,对拷贝后的对象 clonedObj
进行属性修改会影响原始对象 obj
中相同属性的值。
因此,如果你需要进行深拷贝而不仅仅是浅拷贝,你需要使用其他的方法,如使用递归或第三方库来实现深度复制。
网友评论