Object.fromEntries()和Object.assign有什么区别
时间: 2023-11-02 20:00:23 浏览: 141
Object.fromEntries()和Object.assign()是两个用于处理对象的方法,它们有一些区别。
1. 功能不同:
- Object.fromEntries()方法是ES2019引入的新方法,用于将键值对数组转换为对象。它接收一个键值对数组作为参数,并返回一个新对象,该对象由数组中的键值对组成。
- Object.assign()方法用于将一个或多个源对象的属性复制到目标对象。它接收一个目标对象和一个或多个源对象作为参数,并将源对象的属性复制到目标对象中。
2. 处理方式不同:
- Object.fromEntries()使用键值对数组来创建对象,其中数组的每个元素是一个包含键和值的数组。这种方式更直观和简洁。
- Object.assign()通过复制源对象的属性值来创建新对象,如果有重复的属性,则后面的属性值会覆盖前面的属性值。
3. 键名处理不同:
- Object.fromEntries()会将数组中的键名作为字符串处理。即使键名是数字或其他类型,也会被转换为字符串键。
- Object.assign()会保留源对象的原始键类型。如果键名是数字或Symbol类型,则保持不变。
示例代码:
```javascript
// 使用 Object.fromEntries()
const entries = [['name', 'John'], ['age', 30]];
const obj1 = Object.fromEntries(entries);
console.log(obj1); // { name: 'John', age: 30 }
// 使用 Object.assign()
const source = { name: 'John' };
const obj2 = Object.assign({}, source);
console.log(obj2); // { name: 'John' }
```
相关问题:
1. Object.fromEntries()方法在什么情况下特别有用?
2. Object.assign()方法的属性复制顺序是怎样的?
3. 如何使用Object.assign()方法合并多个对象?
4. Object.fromEntries()方法可以用于对象深拷贝吗?如果不能,应该如何实现对象的深拷贝?
阅读全文