0Pricing
JavaScript Academy · Lección

El registro global de Symbols

Comparta Symbols con Symbol.for y keyFor.

El registro global de Symbols es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 4 lecciones en total.

Un registro compartido

El registro global de símbolos permite crear símbolos compartidos en todo el programa mediante una clave, en lugar de que sean siempre únicos.

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

Symbol.for

Symbol.for busca un símbolo mediante una clave de cadena en el registro. Si ya existe, lo devuelve; de lo contrario, crea uno nuevo y lo almacena.

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

Identidad compartida

A diferencia de las llamadas normales a Symbol, dos llamadas a Symbol.for con la misma clave devuelven exactamente el mismo símbolo, por lo que se consideran iguales.

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

Comparación con Symbol

Symbol siempre crea un símbolo nuevo y único, mientras que Symbol.for reutiliza una entrada existente del registro para la misma clave.

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 hace lo contrario: dada una clave de registro, devuelve la clave de cadena que se usó para crearla.

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

keyFor y los símbolos locales

Para un símbolo que no está en el registro, Symbol.keyFor devuelve undefined, lo que permite comprobar si un símbolo es global.

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

Compartición entre módulos

El registro se comparte incluso entre distintas partes de una aplicación, como módulos independientes, por lo que resulta útil para claves de coordinación conocidas.

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

Convenciones de nomenclatura

Como el registro es global, ponga un prefijo a sus claves para evitar conflictos con otras bibliotecas; por ejemplo, use un espacio de nombres basado en el nombre de su aplicación.

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

Persistencia del registro

Una vez registrada una clave, cada llamada posterior a Symbol.for con esa clave devuelve el mismo símbolo durante toda la vida del programa.

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

Cuándo usar el registro

Use el registro cuando distintas partes del código deban ponerse de acuerdo sobre el mismo símbolo mediante su nombre. Use Symbol normal cuando la unicidad y la privacidad sean más 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"))

Combinación con claves de objeto

Los símbolos del registro también funcionan como claves de objeto, lo que permite compartir metadatos que cualquier módulo colaborador puede leer volviendo a obtener el símbolo.

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

Comprobación rápida

Compruebe sus conocimientos sobre el registro.

Resumen

Resumen: El registro global comparte símbolos mediante claves.

  • Symbol.for reutiliza o crea un símbolo del registro
  • La misma clave devuelve el mismo símbolo
  • Symbol.keyFor devuelve la clave o undefined para los símbolos locales
  • Use espacios de nombres en las claves para evitar conflictos
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))

Preguntas frecuentes

¿La lección «El registro global de Symbols» es gratis?

Sí — el texto completo de «El registro global de Symbols» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El registro global de Symbols»?

Comparta Symbols con Symbol.for y keyFor. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar JavaScript Academy?

No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «El registro global de Symbols»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?

Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Creación de Symbols únicos
  2. Symbols como claves de objetos
  3. El registro global de Symbols
  4. Symbols conocidos
← Volver a JavaScript Academy