object.assign是深拷贝还是浅拷贝

object.assign是深拷贝还是浅拷贝
最新回答
鲜奶千层雪

2022-11-18 19:39:56

object.assign是浅拷贝。以下是具体原因:

  • 行为描述:Object.assign是一个用于合并对象的实用工具函数,它将源对象的属性复制到目标对象。如果目标对象已有同名属性,则会被源对象的属性覆盖。
  • 浅拷贝特性:Object.assign的行为更像是对象的浅复制。它仅复制对象的属性值,而不会递归地复制对象内部的复杂类型属性。如果原对象的属性是复杂类型,浅拷贝后的对象仍会引用原对象的实例。
  • 与深拷贝的区别:深拷贝意味着创建一个全新的对象,新对象与原对象的所有属性独立,任何对新对象的修改都不会影响到原对象。而Object.assign并不具备这种特性,它更倾向于对象的快速合并。

因此,在实际应用中,如果需要实现深拷贝,应使用其他方法,如JSON.parse和JSON.stringify的组合,或者手动递归处理复杂类型的属性。