Create an empty map that does not have properties
An object with no prototype: no inherited keys such as toString or __proto__.
function createDictionary() { return Object.create(null); }
Usage
const counts = createDictionary();
'toString' in counts; // → false
'toString' in {}; // → true
counts.__proto__ = 'a key like any other';
Object.keys(counts); // → ['__proto__']
Know the limits
- Keys from user input, such as "__proto__", stay ordinary data, as the last lines show.
- For keys added and removed at runtime, a Map is often clearer. JSON.stringify serializes a null-prototype object but turns a Map into {}.
The function above is the code the usage lines run. It does not validate its arguments; add checks where it receives untrusted input.
Source & maintenance
Based on Create an empty map that does not have properties from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Documented as a reference with executed usage lines. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Pick properties from an object — Build a new object with only the requested own properties.
- Omit properties from an object — Keep the own enumerable fields that are not in a supplied list.
- Create an object from pairs of key and value — Turn [key, value] pairs into a plain object with Object.fromEntries.