Globaali Symbol-rekisteri
Jakakaa symboleja Symbol.for- ja keyFor-menetelmillä.
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))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
- Yksilöllisten Symbol-arvojen luominen
- Symbolit objektien avaimina
- Globaali Symbol-rekisteri
- Tunnetut symbolit