Object.assign 的简单教程

本文摘录自GPT

Object.assign 是 JavaScript 中用来复制对象的一个方法。它可以把一个或多个源对象的所有可枚举属性复制到目标对象中,返回这个目标对象。下面我会用一些简单的例子来说明它的用法。

基本用法

假设我们有两个对象:

const obj1 = { a: 1, b: 2 };

const obj2 = { b: 3, c: 4 };

我们想把 obj2 的属性复制到 obj1 中,可以这样做:

Object.assign(obj1, obj2);

执行完这段代码后,obj1 变成了:

{ a: 1, b: 3, c: 4 }

注意:obj1 中的属性 b 被 obj2 中的属性 b 覆盖了。

创建新对象

如果我们不想改变原来的对象,而是想创建一个新的对象,可以把第一个参数设为一个空对象 {}:


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

这样 obj1 和 obj2 都不会被修改,而 newObj 的值是:

{ a: 1, b: 3, c: 4 }

多个源对象

Object.assign 还可以接受多个源对象。比如:

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 进行的是浅拷贝,如果源对象的属性值是对象,那么复制的是对象的引用,而不是对象本身。
  • 同名属性覆盖:当多个源对象有同名属性时,后面的源对象的属性值会覆盖前面的。

示例代码

下面是一个完整的示例代码,展示了 Object.assign 的各种用法:

const person = { name: 'Alice' }; 
const details = { age: 25, city: 'New York' };
const extra = { city: 'Los Angeles', hobby: 'Reading' }; const merged = Object.assign({}, person, details, extra); 
 console.log(merged); // 输出: { name: 'Alice', age: 25, city: 'Los Angeles', hobby: 'Reading' }

在这个例子中,extra 对象的 city 属性覆盖了 details 对象的 city 属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值