JavaScript Symbol Primitiv type | Forklart

JavaScript Symbol Primitiv type | Forklart
En ny primitiv type blir introdusert i ES6 kjent som "Symbol“. Symboler er innebygde objekter som brukes til å legge til unike eiendomstaster for et JavaScript-objekt. Disse unike eiendomstastene vil ikke komme i konflikt med nøklene som er lagt til av andre skript og er skjult for mekanismene som brukes for å få tilgang til objektet, for eksempel "for i" Løkke.

JavaScript -symbolet primitiv type er opprettet og kan deles globalt. Videre kan det også brukes til å definere de skjulte egenskapene til et objekt. Det eksisterer også noen kjente JavaScript-symboler som inneholder den vanlige oppførselen til JavaScript.

Denne oppskrivningen vil forklare JavaScript -symbol primitiv type ved hjelp av passende eksempler. Så la oss starte!

Hvordan lage et symbol primitiv type i javascript

Det globale “Symbol ()”Funksjon brukes til å lage et nytt JavaScript -symbol på følgende måte:

La regid = symbol ();

Her, “regid”Er et nytt JavaScript -symbol primitiv type.

Du kan også legge til symbolbeskrivelsen i parentesen "()”Av symbolet () -funksjonen. Denne beskrivelsen anses som nyttig for feilsøkingsformål, og den gjør også symboler mer beskrivende:

La regid = symbol ('registrerings -ID');
konsoll.logg (regid);

Utgangen fra den gitte koden vil vise den primitive typen "regid”Og beskrivelsen:

Eksempel: Hvordan lage et symbol primitiv type i JavaScript

I eksemplet nedenfor vil vi lage to symboler som heter “Navn”Og“alder”Og gi beskrivelsene deres som et argument til“Symbol ()”Global funksjon:

La navn = symbol ('ansattes navn'),
alder = symbol ('alder');
konsoll.logg (navn);
konsoll.logg (alder);

Utførelse av det ovennevnte eksemplet viser følgende utgang:

Nå vil vi bruke JavaScript “typeof”Operatør for å avgjøre om“Navn”Og“alder”Variabler opprettes som et symbol eller ikke:

konsoll.logg (type av navn);
konsoll.logg (type av alder);

Som du kan se av utgangen, "typeof”Operatøren kom tilbake”symbol”Som typen av de spesifiserte variablene:

Husk at symboler bare opprettes ved hjelp av "Symbol ()”Global funksjon. For samme formål, ved å bruke “ny”Operatøren vil kaste en feil da symboler er primitive verdier:

La regid = nytt symbol ();

regid”Symbol vil ikke bli opprettet, og følgende“Typeerror”Vil bli vist:

Den forrige delen ga metoden for å lage symboler som primitive typeverdier. Nå vil vi gå videre og diskutere hvordan du kan dele symboler i JavaScript.

Hvordan dele et symbol primitiv type i JavaScript

Globalt symbolregister”Støttet av ES6 tillater deg å dele det opprettede symbolet globalt ved å bruke“Symbol.til()”Metode i stedet for å bruke“Symbol ()”Funksjon.

For eksempel lager vi en "regid”Symbol med en beskrivelse som bruker“Symbol.til()”Metode:

La regid = symbol.for ('regid');

Når “Symbol.til()”Metode utføres, den søker etter“regid”Nøkkel i det globale symbolregisteret; Hvis “regid”Symbol eksisterer allerede i registeret,“Symbol.til()”Metoden vil returnere den. I et annet tilfelle en ny "regid”Symbol vil bli opprettet og lagt til det globale symbolregisteret.

Nå, påkalle "Symbol.til()”Metode mens du passerer”regid”Nøkkel som argument vil returnere det eksisterende”regid”Symbol inneholdt i det globale symbolregisteret:

La StudentId = symbol.for ('regid');
konsoll.Logg (Regid === StudentId);

Utgangen viser “ekte”For den strenge sammenligningen mellom“regid”Og“Student ID”Fordi begge er de samme når det gjelder type og lagt til nøkler:

For verifisering av nøkkelen knyttet til “Student ID”, Vi vil utføre “Keyfor ()”Metode og passere“Student ID”Som et argument:

konsoll.Logg (symbol.Keyfor (StudentID));

Keyfor ()”Metoden kommer tilbake“regid”Som StudentId -symbolets nøkkel:

Hvis du søker etter et symbol som ikke er lagt til i det globale symbolregisteret, så "Keyfor ()”Metoden kommer tilbake“udefinert”Verdi for den spesifiserte verdien:

La ansattesId = symbol ('ansatt');
konsoll.Logg (symbol.Keyfor (ansatt));

Her, "Ansatt ID”Symbol eksisterer ikke i det globale symbolregisteret, fordi det opprettes ved hjelp av“Symbol ()" i stedet for "Symbol.til()”Metode, og når“Symbol.til()”Metoden ser etter den i det globale symbolregisteret, den returnerte”udefinert”:

Du har sett at det er ganske greit å lage og dele symbol. Følgende avsnitt vil demonstrere hvordan du kan bruke disse symbolene i JavaScript -koden.

Hvordan bruke symboler for å lage skjulte egenskaper til et objekt i JavaScript

Javascript -symbolet primitive verdi tillater deg å lage skjult Egenskaper til et objekt. For dette formålet kan du opprette en "symbol”Og bruk den som objektets eiendomsnøkkel. Den opprettede eiendommen vil bli hoppet over av for i loop, og et annet manus ville ikke kunne få tilgang til det direkte fordi "symbol”Er ikke inkludert i andre skript. På denne måten anses symboler som ideelle for å skjule objektegenskaper.

Eksempel: Hvordan bruke symboler for å lage skjulte egenskaper til et objekt i JavaScript

Først av alt vil vi lage en "Articlestatus”Objekt som omfatter følgende tre symboler som dets skjulte egenskaper:

La articLestatus =
In_Progress: Symbol ('Artikkel pågår'),
Fullført: Symbol ('Artikkel fullført'),
Ferdigstilt: symbol ('artikkel ferdigstilt'),
;

I neste trinn vil vi legge til et annet symbol som heter “min status”:

La myStatus = symbol ('mystatus');

Her kommer den spennende delen, i “oppgave”Objekt, vi vil legge til to egenskaper, en er“beskrivelse,”Og den andre er“ [min status]”. “[min status]”Er en beregnet egenskap til oppgaveobjektet da det er avledet fra“min status”Symbol og dens verdi omfatter“Fullført”Skjult eiendom til“Articlestatus”Objekt:

La oppgaven =
[Mystatus]: Articlestatus.Fullført,
Beskrivelse: 'JavaScript Symbol Primitiv type'
;
konsoll.logg (oppgave);

Produksjon

Den ovennevnte utgangen betyr at symboler fungerer perfekt for å lage skjulte egenskaper som bare kan nås med tilhørende objekter.

Kjente symboler i JavaScript

ES6 støtter mange forhåndsdefinerte symboler som inneholder JavaScripts vanlige oppførsel, kjent som “Velkjente”Symboler. Disse kjente symbolene representerer den statiske egenskapen til “Symbol”Objekt.

La oss sjekke ut de mest nyttige kjente symbolene på JavaScript.

Symbol.Hasinstance i JavaScript

Symbol.hasinstance er et symbol som brukes til å bestemme om konstruktørobjektet identifiserer det spesifiserte objektet som dets forekomst eller ikke.

Syntaks av symbolet.Hasinstance i JavaScript

[Symbol.hasinstance] (objekt)

Her, "Symbol.hasinstance”Symbol aksepterer et“gjenstand”Som et argument.

Eksempel: symbol.Hasinstance i JavaScript

Vanligvis, når en forekomst brukes som "Objektforekomst av type“, JavaScript påkaller“Symbol.hasinstance”Symbol. Deretter bekrefter det om "gjenstand”Er en forekomst av den andre spesifiserte”type”Objekt eller ikke.

I det følgende eksemplet er matrisen “[]”Er ikke et eksempel på“Bok”Klasse, så“tilfelle av”Operatøren vil returnere“falsk”Som utgang:

klassebok

konsoll.logg ([] forekomst av bok);

Produksjon

Du kan legge til “Symbol.hasinstance”Symbol for å definere matrise”[]”Som et eksempel på“Bok”Klasse:

klassebok
statisk [symbol.hasInstance] (obj)
Returer.IsArray (OBJ);


konsoll.logg ([] forekomst av bok);

Produksjon

Derav "tilfelle av”Operatøren kom tilbake”ekte”Etter å ha utført den spesifiserte sjekken på matrisen“[]”.

Symbol.ISConcatSspreadable i JavaScript

De Symbol.ISConcatSspreadable Symbolet returnerer en boolsk verdi som avgjør om et spesifisert objekt individuelt blir lagt til resultatet av "concat ()”Funksjon eller ikke.

Syntaks av symbolet.ISConcatSspreadable i JavaScript

[Symbol.IsConcatSspreadable]: Verdi

Her, “verdi”Brukes til å stille inn“boolsk" verdien av Symbol.ISConcatSspreadable symbol, hvor “ekte”Tillater symbolet å legge til objektelementene individuelt og“falsk”Vil sammenkoble det spesifiserte objektet som helhet.

Eksempel: symbol.ISConcatSspreadable i JavaScript

For det første vil vi lage en "obj1”JavaScript, som har følgende egenskaper:

La obj1 =
0: 'JS',
1: 'Symbol Primitiv type',
Lengde: 2
;

I neste trinn vil vi sammenkoble “obj1”Med ['Undervisning'] matrise ved hjelp av “concat ()”Funksjon:

La info = ['undervisning'].concat (obj1);
konsoll.logg (info);

Concat () -funksjonen vil ikke spre de individuelle elementene i “obj1”Mens sammen med det med ['Undervisning'] Array:

Hvis du vil legge til elementene i "obj1”Til matrisen må du legge til Symbol.ISConcatSspreadable Symbol som en eiendom til “obj1”Og setter verdien til“ekte”:

La obj1 =
0: 'JS',
1: 'Symbol Primitiv type',
Lengde: 2,
[Symbol.ISConcatSpreadable]: True
;
La info = ['undervisning'].concat (obj1);
konsoll.logg (info);

Sjekk ut den undergitte utgangen; “obj1”Elementer legges til individuelt i det resulterende”info”Array:

Vi har samlet all den essensielle informasjonen relatert til JavaScript -symbolet Primitive Type.

Konklusjon

Bruker Symbol () Global funksjon, kan du opprette en JavaScript -symbolprimitiv type som inneholder en unik verdi, mens Symbol.til() Metode lar deg lage et symbol som kan deles globalt. JavaScript -symbol Primitiv type brukes mest til å definere et objekts skjulte egenskaper. Denne oppskrivningen forklarte JavaScript -symbol primitiv type ved hjelp av passende eksempler.