JavaScript · Avançado · Português · Técnico
objeto sem protótipo
Objeto criado com Object.create(null), que não herda de Object.prototype e por isso não tem toString nem hasOwnProperty. Serve como dicionário puro, livre de chaves herdadas.
Onde usar
Usado como mapa de contagem ou cache cujas chaves vêm de fora, evitando colisão com nomes como constructor e __proto__. Em code review, também é defesa contra prototype pollution, embora Map costume ser alternativa melhor.
Em código
const dic = Object.create(null);
dic.constructor = 1; // chave comum
console.log(dic.toString); // undefined
console.log(Object.hasOwn(dic, 'k'));
// falseExemplos
Usei um objeto sem protótipo como dicionário de contagem.
Com Object.create(null), a chave constructor é só mais uma chave.
Cuidado
Chamar métodos de Object.prototype nele, como obj.hasOwnProperty(k), que dá TypeError; o certo é Object.hasOwn(obj, k).
Sinônimos
Object.create(null), dicionário puro