Object.assign的使用方法
时间: 2025-06-06 15:53:50 浏览: 26
### JavaScript 中 `Object.assign` 的使用教程
`Object.assign` 是 JavaScript 提供的一个用于对象合并的方法。它会将一个或多个源对象的可枚举属性复制到目标对象上,并返回目标对象[^1]。
以下是 `Object.assign` 的基本语法:
```javascript
Object.assign(target, ...sources);
```
- **`target`**:目标对象,所有源对象的属性将被复制到这里。
- **`...sources`**:一个或多个源对象,其属性会被复制到目标对象中。
#### 浅拷贝特性
需要注意的是,`Object.assign` 执行的是浅拷贝操作,这意味着如果源对象中的属性值是引用类型(如数组、对象等),那么目标对象中对应的属性值将是该引用类型的引用,而不是一个新的独立副本[^2]。
以下是一个示例代码展示浅拷贝行为:
```javascript
const original = { a: 1, b: { c: 2 } };
const copy = Object.assign({}, original);
console.log(copy); // { a: 1, b: { c: 2 } }
// 修改 copy.b 的内容会影响 original.b
copy.b.c = 3;
console.log(original.b.c); // 输出 3
```
#### 创建对象的浅拷贝
`Object.assign` 常用于创建对象的浅拷贝。例如:
```javascript
const obj = { x: 10, y: 20 };
const clonedObj = Object.assign({}, obj);
console.log(clonedObj); // { x: 10, y: 20 }
```
#### 合并多个对象
`Object.assign` 还可以用来合并多个对象。如果有属性重名的情况,后面的源对象的属性值会覆盖前面的属性值[^3]。
```javascript
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const mergedObj = Object.assign({}, obj1, obj2);
console.log(mergedObj); // { a: 1, b: 3, c: 4 }
```
#### 深拷贝解决方案
由于 `Object.assign` 只能实现浅拷贝,如果需要深拷贝对象,可以考虑以下方法:
- 使用 JSON 序列化和反序列化(适用于简单结构的对象):
```javascript
const deepCopy = JSON.parse(JSON.stringify(original));
```
- 使用专门的深拷贝库,如 Lodash 的 `_.cloneDeep` 方法[^3]。
#### 注意事项
- 如果目标对象与源对象有同名属性,源对象的值会覆盖目标对象的值。
- 如果源对象中有 `undefined` 或 `null`,它们不会被复制到目标对象中。
- `Object.assign` 不会递归地复制嵌套对象,因此对于复杂对象结构,可能需要额外处理。
阅读全文
相关推荐




















