在地图上使用 Object.create(null) 有什么好处吗?

Is there any advantage to using Object.create(null) over a Map?

我看到人们使用的代码看起来像

const STUFF_MAP = Object.create(null);

STUFF_MAP 想建议只像地图一样使用,所以我明白为什么使用 Object.create(null){} 更好(删除可能导致冲突的属性等),但是不只是使用

有什么好处吗
const STUFF_MAP = new Map();

我什么时候用每一个?是否与编译为 pre es6 有关?

Does it have to do with being compiled to pre es6?

是的,Object.create(null) 是 ES5,如果您需要支持旧浏览器,则不需要 Map 的 polyfill。

除此之外,您应该更喜欢更现代的 Map,它也清楚地表明了变量的用途。您将需要使用 has/get/set 方法访问该集合,而不是 in operator/bracket syntax/assignment。这有时会导致代码不那么简洁,例如对于 incrementing a value,您不能使用复合赋值运算符。

至于性能,应该差别不大;如果您关心,请针对您的特定情况做一个基准。