Object.assign与赋值(=)的区别

3

我正在尝试创建一个对象实例。在面对 Object.assign() 时,我有点困惑。下面两个代码有什么区别?

const obj3 = Object.assign(obj2, obj1);

并且:

let obj2: model;
obj2= obj1;
1个回答

6

赋值只会在内存中创建对象的另一个引用。如果您进行赋值,然后通过其中一个变量名进行更改,则另一个变量也会发生更改,因为它们是同一对象。

Object.assign 将把第二个(和更多)参数的所有可枚举自有属性赋值给第一个参数,并返回第一个参数。 因此:

const obj3 = Object.assign(obj2, obj1);

有点像

for (const prop in obj1) {
  obj2[prop] = obj1[prop]
}
obj3 = obj2;

(使用普通对象 - 跳过自身方面)

它们非常不同。


所以 Object.assign 创建一个新对象,不是引用旧对象,如果我试图更改 Object.assign 创建的对象,主要对象不会改变。我说的对吗? - Qiimiia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接