I've seen people use code that looks like
const STUFF_MAP = Object.create(null);
STUFF_MAP would like suggested only be used like a map, so I understand why using Object.create(null) is better than {} (removing the properties that could cause conflicts etc.), but is there any advantage to not just use
const STUFF_MAP = new Map();
When would I use each one? Does it have to do with being compiled to pre es6?
Yes,
Object.create(null)is ES5 and won't need a polyfill forMap, if you need to support old browsers.Apart from that, you should prefer the more modern
Mapwhich is also clearly indicates the purpose of a variable. You will need to access the collection usinghas/get/setmethods, notinoperator/bracket syntax/assignment. This can sometimes lead to code that isn't as concise, e.g. for incrementing a value you cannot use a compound assignment operator.As for performance, there should not be much of a difference; if you care, do a benchmark for your particular situation.