Det globale Symbol-registeret
Del symboler med Symbol.for og keyFor.
Det globale Symbol-registeret er en gratis leksjon i JavaScript Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i JavaScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i JavaScript Academy inneholder totalt 4 leksjoner.
Et delt register
Det globale symbolregisteret lar deg opprette symboler som deles i hele programmet etter nøkkel, i stedet for at de alltid er unike.
const a = Symbol.for("app.id")
const b = Symbol.for("app.id")
console.log(a === b)Symbol.for
Symbol.for slår opp et symbol etter en strengnøkkel i registeret. Hvis et symbol finnes, returneres det; ellers opprettes et nytt og lagres.
const token = Symbol.for("token")
console.log(token.description)Delt identitet
I motsetning til vanlige Symbol-kall returnerer to Symbol.for-kall med samme nøkkel nøyaktig det samme symbolet, så de er like ved sammenligning.
const x = Symbol.for("shared")
const y = Symbol.for("shared")
console.log(x === y)Sammenlignet med Symbol
Vanlig Symbol oppretter alltid et nytt, unikt symbol, mens Symbol.for gjenbruker en eksisterende registeroppføring for den samme nøkkelen.
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 gjør det motsatte: Når det får et registersymbol, returnerer det strengnøkkelen som ble brukt til å opprette symbolet.
const s = Symbol.for("config")
console.log(Symbol.keyFor(s))keyFor og lokale symboler
For et symbol som ikke finnes i registeret returnerer Symbol.keyFor undefined. Dette er en måte å teste om et symbol er globalt på.
const local = Symbol("private")
const global = Symbol.for("public")
console.log(Symbol.keyFor(local))
console.log(Symbol.keyFor(global))Deling på tvers av moduler
Registeret deles også på tvers av ulike deler av et program, for eksempel separate moduler. Det gjør det nyttig for velkjente koordineringsnøkler.
function getKey() { return Symbol.for("event.bus") }
console.log(getKey() === Symbol.for("event.bus"))Navnekonvensjoner
Fordi registeret er globalt, bør du sette prefiks på nøklene for å unngå kollisjoner med andre biblioteker, for eksempel ved å bruke et navneområde med appnavnet ditt.
const a = Symbol.for("myapp.user.id")
const b = Symbol.for("myapp.user.id")
console.log(a === b)Registeret består
Når en nøkkel først er registrert, returnerer alle senere Symbol.for-kall med denne nøkkelen det samme symbolet så lenge programmet kjører.
Symbol.for("once")
const again = Symbol.for("once")
console.log(Symbol.keyFor(again))Når du bør bruke registeret
Bruk registeret når separat kode må bli enig om det samme symbolet etter navn. Bruk vanlig Symbol når unikhet og personvern er viktigere.
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"))Kombinere med objektnøkler
Registers symboler fungerer også som objektnøkler. Dermed kan samarbeidende moduler dele metadata ved å hente symbolet på nytt.
const META = Symbol.for("meta")
const obj = { [META]: "shared data" }
console.log(obj[Symbol.for("meta")])Kort kontroll
Test kunnskapene dine om registre.
Oppsummering
Oppsummering: Det globale registeret deler symboler etter nøkkel.
- Symbol.for gjenbruker eller oppretter et registersymbol
- Samme nøkkel returnerer det samme symbolet
- Symbol.keyFor returnerer nøkkelen, eller undefined for lokale symboler
- Bruk navneområder i nøklene for å unngå kollisjoner
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))Lær deg JavaScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 59
- Leksjoner
- 200
Ofte stilte spørsmål
Er leksjonen «Det globale Symbol-registeret» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien JavaScript Academy, inkludert «Det globale Symbol-registeret», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i JavaScript Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Det globale Symbol-registeret»?
Del symboler med Symbol.for og keyFor. Du øver på JavaScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med JavaScript Academy?
Ingen tidligere erfaring er nødvendig. JavaScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Det globale Symbol-registeret»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne JavaScript Academy-leksjonen?
Ja. Alle JavaScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Opprette unike Symbol-verdier
- Symboler som objektnøkler
- Det globale Symbol-registeret
- Velkjente symboler