ES6中的map和原生的对象有什么区别?
在 ES6 中,Map 和原生的对象(Object)都是用来存储键值对数据的集合,但它们有显著的区别。以下是它们之间的主要区别:
1. 键的类型
Object:
只允许使用字符串或符号作为键。其他类型的键(如数字或对象)会被自动转换为字符串。
const obj = {};
obj[1] = 'one'; // 键被转换为字符串 '1'
console.log(obj['1']); // 输出 'one'
Map:
可以使用任意类型的值作为键,包括对象、函数、数字等。
const map = new Map();
map.set(1, 'one');
map.set({}, 'empty object');
console.log(map.get(1)); // 输出 'one'
2. 键值对的遍历
Object:
使用 for…in 循环,或者 Object.keys(), Object.values(), Object.entries() 方法来遍历。
const obj = { a: 1, b: 2 };
for (const ke