Object.assign()
是 JavaScript 中的一个方法,用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
这是其基本语法:、
Object.assign(target, ...sources)
target
:目标对象,所有其他源对象的属性都将被复制到该对象。...sources
:一个或多个源对象,从中复制属性到目标对象。
Object.assign()
只会进行浅拷贝(shallow copy),如果源对象的属性值是一个指向对象的引用,它只拷贝那个引用,而不是对象本身。
这里有一个简单的例子:
const obj1 = { a: 1 }; const obj2 = { b: 2 }; const obj3 = { c: 3 }; const mergedObj = Object.assign(obj1, obj2, obj3); console.log(mergedObj); // 输出:{ a: 1, b: 2, c: 3 } console.log(obj1); // 输出:{ a: 1, b: 2, c: 3 }
在这个例子中,obj2
和 obj3
的属性被复制到了 obj1
中,因为 obj1
是目标对象。最后,mergedObj
和 obj1
指向同一个对象,因为 Object.assign()
修改了目标对象并返回了它。
需要注意的是,如果多个源对象具有相同的属性,则后面的源对象将覆盖前面的源对象的属性。
另外,Object.assign()
不会触发源对象上定义的 getter 或 setter,它只进行属性的简单赋值。
这个方法在合并或克隆对象时非常有用,但请注意它不会进行深拷贝,因此在处理包含嵌套对象或数组的对象时可能会遇到问题。如果需要深拷贝,你可能需要使用其他方法或库,如 JSON.parse(JSON.stringify(obj))(但请注意,这种方法有其自身的限制和缺陷)。