0Pricing
JavaScript Academy · Lektion

Die globale Symbol-Registry

Teilen Sie Symbols mit Symbol.for und keyFor.

Die globale Symbol-Registry ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Eine gemeinsame Registry

Mit der globalen Symbol-Registry können Sie anhand eines Schlüssels Symbole erstellen, die im gesamten Programm gemeinsam verwendet werden, anstatt immer eindeutig zu sein.

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

Symbol.for

Symbol.for sucht in der Registry anhand eines String-Schlüssels nach einem Symbol. Existiert bereits eines, wird es zurückgegeben; andernfalls wird ein neues erstellt und gespeichert.

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

Gemeinsame Identität

Im Gegensatz zu gewöhnlichen Symbol-Aufrufen geben zwei Aufrufe von Symbol.for mit demselben Schlüssel exakt dasselbe Symbol zurück und sind daher gleich.

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

Der Unterschied zu Symbol

Symbol erstellt immer ein neues, eindeutiges Symbol, während Symbol.for für denselben Schlüssel einen vorhandenen Registry-Eintrag wiederverwendet.

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 funktioniert umgekehrt: Wenn Sie ein Registry-Symbol übergeben, gibt die Methode den String-Schlüssel zurück, mit dem es erstellt wurde.

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

keyFor und lokale Symbole

Für ein Symbol, das nicht in der Registry enthalten ist, gibt Symbol.keyFor undefined zurück. So können Sie prüfen, ob ein Symbol global ist.

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

Modulübergreifendes Teilen

Die Registry wird auch über verschiedene Teile einer Anwendung hinweg gemeinsam genutzt, etwa über separate Module hinweg. Dadurch eignet sie sich für bekannte Koordinationsschlüssel.

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

Namenskonventionen

Da die Registry global ist, sollten Sie Ihre Schlüssel mit einem Präfix versehen, um Kollisionen mit anderen Bibliotheken zu vermeiden, zum Beispiel mit einem Namespace wie dem Namen Ihrer App.

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

Die Registry bleibt bestehen

Sobald ein Schlüssel registriert wurde, gibt jeder spätere Aufruf von Symbol.for mit diesem Schlüssel während der gesamten Programmlaufzeit dasselbe Symbol zurück.

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

Wann Sie die Registry verwenden sollten

Verwenden Sie die Registry, wenn unabhängiger Code sich anhand eines Namens auf dasselbe Symbol einigen muss. Verwenden Sie das gewöhnliche Symbol, wenn Eindeutigkeit und Datenschutz wichtiger sind.

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"))

Mit Objektschlüsseln kombinieren

Registry-Symbole funktionieren ebenfalls als Objektschlüssel. So können Sie gemeinsame Metadaten speichern, die jedes kooperierende Modul durch erneutes Abrufen des Symbols lesen kann.

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

Kurze Überprüfung

Testen Sie Ihr Wissen über die Registry.

Zusammenfassung

Zusammenfassung: Die globale Registry teilt Symbole anhand eines Schlüssels.

  • Symbol.for verwendet ein Registry-Symbol wieder oder erstellt ein neues
  • Für denselben Schlüssel wird dasselbe Symbol zurückgegeben
  • Symbol.keyFor gibt den Schlüssel zurück oder bei lokalen Symbolen undefined
  • Verwenden Sie Namespaces in Schlüsseln, um Konflikte zu vermeiden
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))

Häufig gestellte Fragen

Ist die Lektion „Die globale Symbol-Registry“ kostenlos?

Ja — der vollständige Text von „Die globale Symbol-Registry“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Die globale Symbol-Registry“?

Teilen Sie Symbols mit Symbol.for und keyFor. Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um JavaScript Academy zu starten?

Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Die globale Symbol-Registry“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Eindeutige Symbols erstellen
  2. Symbols als Objektschlüssel
  3. Die globale Symbol-Registry
  4. Bekannte Symbols
← Zurück zu JavaScript Academy