0Pricing
JavaScript Academy · Leçon

Registre mondial des symboles

Partagez des symboles avec Symbol.for et keyFor.

Registre mondial des symboles est une leçon JavaScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage JavaScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours JavaScript Academy comprend 4 leçons au total.

Un registre partagé

Le registre global des symboles permet de créer des symboles partagés dans tout votre programme au moyen d’une clé, au lieu de toujours créer des symboles uniques.

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

Symbol.for

Symbol.for recherche un symbole dans le registre à partir d’une clé de chaîne. Si un symbole existe, il est renvoyé ; sinon, un nouveau symbole est créé et enregistré.

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

Identité partagée

Contrairement aux appels simples à Symbol, deux appels à Symbol.for avec la même clé renvoient exactement le même symbole et sont donc considérés comme égaux.

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

Comparaison avec Symbol

Symbol crée toujours un nouveau symbole unique, tandis que Symbol.for réutilise l’entrée du registre existante pour la même clé.

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 effectue l’opération inverse : lorsqu’on lui fournit un symbole du registre, il renvoie la clé de chaîne utilisée pour le créer.

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

keyFor et les symboles locaux

Pour un symbole qui ne se trouve pas dans le registre, Symbol.keyFor renvoie undefined, ce qui permet de vérifier si un symbole est global.

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

Partage entre modules

Le registre est partagé même entre différentes parties d’une application, comme des modules distincts, ce qui le rend utile pour des clés de coordination connues.

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

Conventions de nommage

Comme le registre est global, préfixez vos clés pour éviter les collisions avec d’autres bibliothèques, par exemple en utilisant un espace de noms correspondant au nom de votre application.

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

Le registre persiste

Une fois une clé enregistrée, chaque appel ultérieur à Symbol.for avec cette clé renvoie le même symbole pendant toute la durée de vie du programme.

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

Quand utiliser le registre

Utilisez le registre lorsque du code distinct doit s’accorder sur le même symbole à partir de son nom. Utilisez le symbole simple lorsque l’unicité et la confidentialité sont plus 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"))

Combiner avec les clés d’objet

Les symboles du registre fonctionnent également comme clés d’objet, ce qui permet de partager des métadonnées que tout module coopérant peut lire en récupérant à nouveau le symbole.

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

Vérification rapide

Vérifiez vos connaissances sur le registre.

Récapitulatif

Récapitulatif : Le registre global partage les symboles au moyen de clés.

  • Symbol.for réutilise ou crée un symbole du registre
  • La même clé renvoie le même symbole
  • Symbol.keyFor renvoie la clé ou undefined pour les symboles locaux
  • Utilisez des clés avec espace de noms pour éviter les conflits
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))

Questions Fréquemment Posées

La leçon « Registre mondial des symboles » est-elle gratuite ?

Oui — le texte complet de « Registre mondial des symboles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours JavaScript Academy, passe à CoddyKit PRO. Le cours JavaScript Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Registre mondial des symboles » ?

Partagez des symboles avec Symbol.for et keyFor. Tu pratiques JavaScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer JavaScript Academy ?

Aucune expérience préalable n'est requise. JavaScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Registre mondial des symboles » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon JavaScript Academy ?

Oui. Chaque leçon JavaScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Créer des symboles uniques
  2. Symboles comme clés d’objet
  3. Registre mondial des symboles
  4. Symboles bien connus
← Retour à JavaScript Academy