如果我们可以用普通的 javascript 对象创建键/值对,那么使用新的 ES6
Map
对象的原因是什么?
我什么时候应该使用其中一种,什么时候应该使用另一种? Map 仅限于值还是也可以包含函数?
结合 1 和 2,当您迭代映射时,您将获得一个有用的键值对数组!
map.prototype.forEach()
文档。
来源:另一个很好的问题/答案交流。值得将此标记为重复项。
更新:
添加到此答案以直接解决问题:
每当您需要将事物关联在一起或保留插入顺序时,您应该使用映射(常见数据结构需要这个)。
当你不需要这样做时,你可以使用一个对象,但它们只是做不同的事情。
更新2: OP问功能是否也可以。是的,因为值也可以是函数!检查一下:
let x = new Map();
let y = () => {
console.log('derp');
}
x.set(y, "HI");
console.log(x.get(y)); // will log "HI"
有关更多信息,请查看这句话的来源,在 Eloquent JavaScript 的精彩章节中:
“每个值都有一个类型决定其作用。JavaScript 中有六种基本值类型:数字、字符串、布尔值、对象、函数和未定义值。”
此外,Map 和 Object 之间的主要区别,来自 MDN,标题“Objects and Maps Comparison”下:
再次强调,键可以是任何值!
size
属性来跟踪对的数量