📜  Object.assign() (1)

📅  最后修改于: 2023-12-03 15:18:05.236000             🧑  作者: Mango

Object.assign()

简介

Object.assign() 是 JavaScript 中的一个内置函数,用于将一个或多个源对象的属性复制到目标对象。它是一种浅拷贝方法,即只复制对象的引用,而不复制对象的实际值。Object.assign() 函数返回目标对象。

语法
Object.assign(target, ...sources)
  • target: 目标对象,即要将源对象的属性复制到的对象。
  • sources: 一个或多个源对象,即要从中复制属性的对象。
用法示例
复制对象
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const obj3 = { c: 3 };

const newObj = Object.assign({}, obj1, obj2, obj3);
// newObj: { a: 1, b: 2, c: 3 }

在上面的示例中,Object.assign()obj1obj2obj3 的属性复制到了新创建的空对象中,返回了新创建的对象。

合并对象
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };

const mergedObj = Object.assign({}, obj1, obj2);
// mergedObj: { a: 1, b: 3, c: 4 }

在上面的示例中,Object.assign()obj2 对象的属性合并到了 obj1 对象中,并返回了合并后的对象。如果多个对象拥有相同的属性,则后面的对象的属性值会覆盖前面的对象的属性值。

克隆对象
const obj = { a: 1, b: 2 };
const cloneObj = Object.assign({}, obj);
// cloneObj: { a: 1, b: 2 }

在上面的示例中,通过将一个空对象作为目标对象,然后将原始对象 obj 的属性复制到目标对象中,实现了一个简单的对象克隆。

更新对象属性
const obj = { a: 1, b: 2 };
const updatedObj = Object.assign({}, obj, { b: 3, c: 4 });
// updatedObj: { a: 1, b: 3, c: 4 }

在上面的示例中,Object.assign() 用于更新对象的属性值。将原始对象 obj 的属性复制到目标对象中,并将指定的属性 { b: 3, c: 4 } 添加或更新到目标对象中。

数组的属性复制
const arr = [1, 2, 3];
const obj = { a: 0 };

const newArray = Object.assign({}, arr, obj);
// newArray: [1, 2, 3, a: 0]

在上面的示例中,Object.assign() 也可以用于将数组的元素作为目标对象的属性复制。数组的索引将会作为属性名添加到目标对象中。

注意事项
  • Object.assign() 是浅拷贝,即只复制对象的引用。如果源对象的属性值是一个对象或数组,那么目标对象中的属性值将与源对象中的属性值引用同一个对象。
  • Object.assign() 不会复制源对象的继承属性和不可枚举属性。
  • 如果目标对象是 nullundefined,则会抛出 TypeError

更多关于 Object.assign() 的详细说明,可以参考 MDN 文档