0Pricing
JavaScript Academy · Aula

O registro global de Symbols

Compartilhe Symbols com Symbol.for e keyFor.

O registro global de Symbols é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 4 aulas no total.

Um registro compartilhado

O registro global de símbolos permite criar símbolos compartilhados por todo o programa usando uma chave, em vez de torná-los sempre exclusivos.

const a = Symbol.for("app.id")
const b = Symbol.for("app.id")
console.log(a === b)

Symbol.for

Symbol.for procura um símbolo por uma chave de texto no registro. Se já existir um, ele será retornado; caso contrário, um novo será criado e armazenado.

const token = Symbol.for("token")
console.log(token.description)

Identidade compartilhada

Ao contrário de chamadas simples a Symbol, duas chamadas a Symbol.for com a mesma chave retornam exatamente o mesmo símbolo e, portanto, são consideradas iguais.

const x = Symbol.for("shared")
const y = Symbol.for("shared")
console.log(x === y)

Comparação com Symbol

Symbol simples sempre cria um novo símbolo exclusivo, enquanto Symbol.for reutiliza uma entrada existente do registro para a mesma chave.

const local1 = Symbol("k")
const local2 = Symbol("k")
const global1 = Symbol.for("k")
const global2 = Symbol.for("k")
console.log(local1 === local2)
console.log(global1 === global2)

Symbol.keyFor

Symbol.keyFor faz o inverso: dado um símbolo do registro, ele retorna a chave de texto usada para criá-lo.

const s = Symbol.for("config")
console.log(Symbol.keyFor(s))

keyFor e símbolos locais

Para um símbolo que não esteja no registro, Symbol.keyFor retorna undefined. Essa é uma forma de verificar se um símbolo é global.

const local = Symbol("private")
const global = Symbol.for("public")
console.log(Symbol.keyFor(local))
console.log(Symbol.keyFor(global))

Compartilhamento entre módulos

O registro é compartilhado até entre partes diferentes de uma aplicação, como módulos separados, o que o torna útil para chaves de coordenação conhecidas.

function getKey() { return Symbol.for("event.bus") }
console.log(getKey() === Symbol.for("event.bus"))

Convenções de nomenclatura

Como o registro é global, use prefixos nas chaves para evitar conflitos com outras bibliotecas, por exemplo, usando um espaço de nomes como o nome da sua aplicação.

const a = Symbol.for("myapp.user.id")
const b = Symbol.for("myapp.user.id")
console.log(a === b)

O registro persiste

Depois que uma chave é registrada, toda chamada posterior a Symbol.for com essa chave retorna o mesmo símbolo durante o tempo de vida do programa.

Symbol.for("once")
const again = Symbol.for("once")
console.log(Symbol.keyFor(again))

Quando usar o registro

Use o registro quando partes de código separadas precisarem concordar sobre o mesmo símbolo por nome. Use Symbol simples quando a exclusividade e a privacidade forem mais importantes.

const sharedFlag = Symbol.for("feature.enabled")
const privateFlag = Symbol("feature.enabled")
console.log(sharedFlag === Symbol.for("feature.enabled"))
console.log(privateFlag === Symbol.for("feature.enabled"))

Combinando com chaves de objeto

Os símbolos do registro também funcionam como chaves de objeto, permitindo metadados compartilhados que qualquer módulo cooperante pode ler buscando novamente o símbolo.

const META = Symbol.for("meta")
const obj = { [META]: "shared data" }
console.log(obj[Symbol.for("meta")])

Verificação rápida

Teste seus conhecimentos sobre o registro.

Recapitulação

Recapitulação: O registro global compartilha símbolos por chave.

  • Symbol.for reutiliza ou cria um símbolo do registro
  • A mesma chave retorna o mesmo símbolo
  • Symbol.keyFor retorna a chave ou undefined para símbolos locais
  • Use espaços de nomes nas chaves para evitar conflitos
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))

Perguntas Frequentes

A aula “O registro global de Symbols” é grátis?

Sim — o texto completo de “O registro global de Symbols” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 4 aulas no total.

O que vou aprender em “O registro global de Symbols”?

Compartilhe Symbols com Symbol.for e keyFor. Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar JavaScript Academy?

Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “O registro global de Symbols”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de JavaScript Academy?

Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Criando Symbols exclusivos
  2. Symbols como chaves de objetos
  3. O registro global de Symbols
  4. Symbols conhecidos
← Voltar para JavaScript Academy