我见过人们使用的代码看起来像
const STUFF_MAP = Object.create(null);
STUFF_MAP
希望建议只像地图一样使用,所以我理解为什么使用Object.create(null)
比{}
(删除可能导致冲突的属性等)更好,但是不只是使用有什么好处
const STUFF_MAP = new Map();
我什么时候使用每一个?它与被编译到 es6 之前有关系吗?
我见过人们使用的代码看起来像
const STUFF_MAP = Object.create(null);
STUFF_MAP
希望建议只像地图一样使用,所以我理解为什么使用Object.create(null)
比{}
(删除可能导致冲突的属性等)更好,但是不只是使用有什么好处
const STUFF_MAP = new Map();
我什么时候使用每一个?它与被编译到 es6 之前有关系吗?
它与被编译到 es6 之前有关系吗?
是的,Object.create(null)
是 ES5 Map
,如果您需要支持旧浏览器,则不需要 polyfill。
除此之外,您应该更喜欢更现代的Map
,这也清楚地表明了变量的用途。您将需要使用 // 方法访问集合has
,而不是运算符get
/括号语法/赋值。这有时会导致代码不够简洁,例如,在增加一个值时,您不能使用复合赋值运算符。set
in
至于性能,应该差别不大;如果您关心,请针对您的特定情况进行基准测试。