区别
1.键的类型
Object的键只能是字符串或Symbol:
const obj = {
'1': 'one',
2: 'two', // 实际上键会被转换为字符串 '2'
true: 'trueValue' // 实际上键会被转换为字符串 'true'
};
console.log(obj['1']); // 输出 'one'
console.log(obj['2']); // 输出 'two'
console.log(obj['true']); // 输出 'trueValue'
Map的键可以是任意类型:
const map = new Map();
map.set(1, 'one');
map.set(true, 'trueValue');
map.set({ key: 'obj' }, 'objectValue');
console.log(map.get(1)); // 输出 'one'
console.log(map.get(true)); // 输出 'trueValue'
console.log(map.get({ key: 'obj' })); // 输出 undefined,因为Map中的键是引用类型,需使用相同的引用
2. 键的唯一性
Object中,相同的键会覆盖:
const obj = {
key: 'value1',
key: 'value2' // 覆盖前面的值
}