JavaScriptObjetosavancado

Symbol como chave

Em código real, às vezes você precisa criar propriedades em um objeto que não sejam acidentalmente sobrescritas ou listadas em iterações comuns. Por exemplo, bibliotecas ou frameworks usam Symbols para adicionar metadados internos sem poluir a interface pública do objeto. Dominar Symbols permite que você projete APIs mais seguras e evite conflitos de nomes.

O PROBLEMA

Use Symbol para propriedades privadas. Symbol não aparece em Object.keys().

EXEMPLO

const _id = Symbol("id");
const obj = {nome:"Ana", [_id]: 123};
Object.keys(obj) → ["nome"]

SOBRE O CONCEITO

Symbol é um tipo de dado primitivo que cria um identificador único e imutável. Ao usar const _id = Symbol('id'); e depois obj[_id] = 123;, essa chave não aparece em Object.keys(obj), porque Object.keys só enumera propriedades com chaves string. Erro comum: pensar que dois Symbols com a mesma descrição são iguais — na verdade Symbol('id') !== Symbol('id'), cada chamada gera um novo símbolo. Para recuperar propriedades Symbol, usa-se Object.getOwnPropertySymbols(obj). Isso é útil para simular propriedades privadas em objetos sem usar class ou WeakMap.

RESOLUÇÃO

Mais exercícios de Objetos

JSO011 · IntermediárioFactory functionJSO001 · BásicoCriar objeto simplesJSO003 · BásicoMétodo no objetoJSO006 · BásicoDesestruturação de objeto
Ver todos os exercícios de JavaScript