Symbols als Objektschlüssel
Verwenden Sie Symbols für kollisionsfreie Eigenschaften.
Symbols als Objektschlüssel ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Symbole als Schlüssel
Ein Symbol kann als Eigenschaftsschlüssel eines Objekts verwendet werden. Da jedes Symbol eindeutig ist, kann eine solche Eigenschaft nicht versehentlich mit einem String-Schlüssel kollidieren.
const id = Symbol("id")
const user = {}
user[id] = 123
console.log(user[id])Berechnete Symbolschlüssel
Um ein Symbol als Schlüssel in einem Objektliteral zu verwenden, setzen Sie es als berechneten Eigenschaftsnamen in eckige Klammern.
const id = Symbol("id")
const user = {
name: "Ann",
[id]: 99
}
console.log(user[id])Eine Symbol-Eigenschaft auslesen
Sie müssen eine Referenz auf dasselbe Symbol besitzen, um seine Eigenschaft auszulesen. Ohne diese Referenz ist der Wert praktisch verborgen.
const secret = Symbol("secret")
const obj = { [secret]: "hidden" }
console.log(obj[secret])Nicht aufzählbar in for-in
Symbolschlüssel werden von einer for-in-Schleife übersprungen. Dadurch bleiben Symboleigenschaften bei gewöhnlichen Iterationen außen vor.
const tag = Symbol("tag")
const obj = { a: 1, b: 2, [tag]: 3 }
for (const key in obj) {
console.log(key)
}Von Object.keys übersprungen
Object.keys gibt nur String-Schlüssel zurück, daher werden auch Symbolschlüssel-Eigenschaften dabei ausgeschlossen.
const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
console.log(Object.keys(obj))Für JSON verborgen
JSON.stringify ignoriert Symbolschlüssel vollständig, sodass sie niemals in der serialisierten Ausgabe erscheinen. Dadurch eignen sie sich für interne Metadaten.
const meta = Symbol("meta")
const obj = { name: "Bo", [meta]: "internal" }
console.log(JSON.stringify(obj))Symbolschlüssel finden
Um Symbolschlüssel aufzulisten, verwenden Sie Object.getOwnPropertySymbols. Diese Methode gibt ein Array der Symboleigenschaften eines Objekts zurück.
const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
const syms = Object.getOwnPropertySymbols(obj)
console.log(syms.length)Namenskonflikte vermeiden
Mit Symbolschlüsseln können verschiedene Bibliotheken einem Objekt Eigenschaften hinzufügen, ohne dass die Gefahr besteht, sich gegenseitig zu überschreiben, da ihre Symbole unterschiedlich sind.
const libA = Symbol("data")
const libB = Symbol("data")
const shared = {}
shared[libA] = 1
shared[libB] = 2
console.log(shared[libA], shared[libB])Symbolschlüssel und Spread
Der Spread-Operator für Objekte kopiert auch Symbolschlüssel – anders als for-in und Object.keys. Beachten Sie daher, dass sie beim Klonen übernommen werden.
const tag = Symbol("tag")
const src = { a: 1, [tag]: 2 }
const copy = { ...src }
console.log(copy[tag])Daten ähnlich wie private Daten speichern
Symbolschlüssel bieten eine einfache Form des Datenschutzes: Auf die Daten kann nur Code zugreifen, der das Symbol besitzt. Dadurch erscheinen sie nicht in normalen Eigenschaftsauflistungen.
const balance = Symbol("balance")
function makeAccount() {
const acct = {}
acct[balance] = 100
return { acct: acct, key: balance }
}
const a = makeAccount()
console.log(a.acct[a.key])Symboleigenschaften löschen
Sie entfernen eine Symboleigenschaft genauso wie jede andere Eigenschaft, indem Sie den delete-Operator mit der Symbolreferenz verwenden.
const tag = Symbol("tag")
const obj = { [tag]: 5 }
delete obj[tag]
console.log(obj[tag])Kurze Überprüfung
Testen Sie Ihr Wissen über Symbolschlüssel.
Zusammenfassung
Zusammenfassung: Symbole ermöglichen sichere, verborgene Objektschlüssel.
- Verwenden Sie eckige Klammern für berechnete Symbolschlüssel
- Sie werden von for-in, Object.keys und JSON übersprungen
- Sie werden über Object.getOwnPropertySymbols aufgelistet
- Sie eignen sich hervorragend für konfliktfreie Metadaten
const k = Symbol("k")
const o = { [k]: 7 }
console.log(o[k])Häufig gestellte Fragen
Ist die Lektion „Symbols als Objektschlüssel“ kostenlos?
Ja — der vollständige Text von „Symbols als Objektschlüssel“ 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 „Symbols als Objektschlüssel“?
Verwenden Sie Symbols für kollisionsfreie Eigenschaften. 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 2 von 4.
Wie lange dauert die Lektion „Symbols als Objektschlüssel“?
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
- Eindeutige Symbols erstellen
- Symbols als Objektschlüssel
- Die globale Symbol-Registry
- Bekannte Symbols