JavaScript Academy · Oppitunti

Globaali Symbol-rekisteri

Jakakaa symboleja Symbol.for- ja keyFor-menetelmillä.

Oppitunti 3/413 vaihetta

Globaali Symbol-rekisteri on ilmainen JavaScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu JavaScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.

Jaettu rekisteri

Globaali symbolirekisteri mahdollistaa symbolien luomisen avaimen perusteella koko ohjelman yhteiseen käyttöön sen sijaan, että symbolit olisivat aina yksilöllisiä.

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

Symbol.for

Symbol.for etsii symbolirekisteristä symbolia merkkijonoavaimen perusteella. Jos symboli löytyy, se palautetaan; muuten luodaan ja tallennetaan uusi symboli.

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

Jaettu identiteetti

Toisin kuin tavalliset Symbol-kutsut, kaksi samalla avaimella tehtyä Symbol.for-kutsua palauttaa täsmälleen saman symbolin, joten niitä pidetään samoina.

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

Vertailu Symbol-kutsuun

Tavallinen Symbol luo aina uuden yksilöllisen symbolin, kun taas Symbol.for käyttää uudelleen rekisterin olemassa olevaa tietuetta samalla avaimella.

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 toimii päinvastoin: kun sille annetaan rekisteröity symboli, se palauttaa merkkijonoavaimen, jolla symboli luotiin.

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

keyFor ja paikalliset symbolit

Jos symbolia ei ole rekisterissä, Symbol.keyFor palauttaa arvon undefined. Näin voidaan testata, onko symboli globaali.

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

Jakaminen moduulien välillä

Rekisteri on yhteinen myös sovelluksen eri osien, kuten erillisten moduulien, välillä. Siksi se sopii tunnettujen koordinointiavainten käyttöön.

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

Nimeämiskäytännöt

Koska rekisteri on globaali, lisätkää avaimiin etuliite törmäysten välttämiseksi. Voitte käyttää esimerkiksi sovelluksenne nimeen perustuvaa nimiavaruutta.

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

Rekisteri säilyy

Kun avain on rekisteröity, jokainen myöhempi samalla avaimella tehty Symbol.for palauttaa saman symbolin ohjelman koko elinkaaren ajan.

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

Milloin rekisteriä kannattaa käyttää

Käyttäkää rekisteriä, kun erillisen koodin on sovittava samasta symbolista nimen perusteella. Käyttäkää tavallista Symbolia, kun yksilöllisyys ja yksityisyys ovat tärkeämpiä.

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

Yhdistäminen olioavaimiin

Rekisterin symboleja voi käyttää myös olioavaimina, jolloin moduulit voivat jakaa metatietoja ja lukea niitä hakemalla saman symbolin uudelleen.

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

Pikatarkistus

Testatkaa tietonne symbolirekisteristä.

Kertaus

Kertaus: Globaali rekisteri jakaa symboleja avaimen perusteella.

  • Symbol.for käyttää rekisterin symbolia uudelleen tai luo uuden
  • Sama avain palauttaa saman symbolin
  • Symbol.keyFor palauttaa avaimen tai paikallisille symboleille arvon undefined
  • Nimetkää avaimet nimiavaruuksien avulla törmäysten välttämiseksi
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))
Aloita maksutta

Opi JavaScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
59
Oppitunnit
200

Usein kysytyt kysymykset

Onko oppitunti ”Globaali Symbol-rekisteri” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa JavaScript Academy-oppimispolun 3 oppituntia, myös oppitunnin “Globaali Symbol-rekisteri”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Globaali Symbol-rekisteri”?

Jakakaa symboleja Symbol.for- ja keyFor-menetelmillä. Harjoittelet JavaScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni JavaScript Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin JavaScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Globaali Symbol-rekisteri”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä JavaScript Academy-oppitunnilla?

Kyllä. Jokainen JavaScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Yksilöllisten Symbol-arvojen luominen
  2. Symbolit objektien avaimina
  3. Globaali Symbol-rekisteri
  4. Tunnetut symbolit
← Takaisin: JavaScript Academy