Object.assign()
函数是用于将一个或多个源对象的属性复制到目标对象的函数。它的语法如下:
Object.assign(target, ...sources)
其中,target
是目标对象,sources
是一个或多个源对象。它会将每个源对象中的可枚举属性(不包括继承的属性)复制到目标对象中,并返回目标对象。
可以使用Object.assign()
函数进行浅拷贝(shallow copy)操作。这意味着如果源对象中的属性是对象或数组,它们将被引用复制到目标对象中,而不是创建一个新的对象。如果目标对象中存在相同的属性,则源对象的属性将覆盖目标对象的属性。
以下是一个示例:
const target = {};
const source = { foo: 1, bar: 2 };
const result = Object.assign(target, source);
console.log(target); // { foo: 1, bar: 2 }
console.log(result); // { foo: 1, bar: 2 }
console.log(target === result); // true,返回的是目标对象的引用
source.foo = 3;
console.log(target); // { foo: 3, bar: 2 },源对象的改变会影响到目标对象
需要注意的是,Object.assign()
函数是浅拷贝,并且它只复制对象自身的属性,不会复制继承的属性,也不会复制对象的原型链上的属性。
另外,Object.assign()
函数在应用场景中也经常被用于合并对象,将多个对象合并成一个新的对象。