Object.assign的用法是什么?
时间: 2024-05-12 07:12:06 浏览: 86
js代码-// Object.assign(target, source)
Object.assign方法主要用于对象合并,将源对象中的属性复制到目标对象中,同时返回目标对象,具体用法如下[^1]:
假设我们有两个对象,obj1和obj2,我们将obj2的属性复制到obj1中。代码如下:
```javascript
let obj1 = { a: 1 };
let obj2 = { b: 2, c: 3 };
let obj3 = Object.assign(obj1, obj2);
console.log(obj1); // 输出:{ a: 1, b: 2, c: 3 }
console.log(obj2); // 输出:{ b: 2, c: 3 }
console.log(obj3); // 输出:{ a: 1, b: 2, c: 3 }
```
在上面的代码中,Object.assign将obj2的属性复制到了obj1中,并返回了obj1。可以看到,obj1的属性被修改了,obj2的属性并没有受到影响,而obj3与obj1是完全相同的对象。
需要注意的是,Object.assign是浅拷贝,如果源对象的属性值是一个对象或其他复合类型的值,那么目标对象属性值将是一个指向源对象属性值的引用。因此,如果源对象属性值被修改了,目标对象属性值也会发生变化。
例如:
```javascript
let obj1 = { a: 1, obj: { b: 2 } };
let obj2 = { c: 3 };
let obj3 = Object.assign({}, obj1, obj2);
console.log(obj3); // 输出:{ a: 1, obj: { b: 2 }, c: 3 }
obj1.obj.b = 4;
console.log(obj3); // 输出:{ a: 1, obj: { b: 4 }, c: 3 }
```
上面的代码中,我们将obj1和obj2合并到了一个新的对象obj3中,并打印了obj3。然后,我们修改了obj1中obj属性的值,obj3也随之发生了变化。这是因为obj1和obj3中的obj属性引用的是同一个对象。
阅读全文