JavaScripti sümbol (koos näidetega)

Selles õpetuses saate näidete abil õppida JavaScripti sümbolit.

JavaScripti sümbol

JavaScripti ES6 juurutas uue primitiivse andmetüübi nimega Symbol. Sümbolid on muutumatud (neid ei saa muuta) ja need on kordumatud. Näiteks,

 // two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false

Kuigi väärtus1 ja väärtus2 sisaldavad mõlemat sama kirjeldust, on need erinevad.

Sümboli loomine

Kasutate Symbol()funktsioon luua Symbol. Näiteks,

 // creating symbol const x = Symbol() typeof x; // symbol

Selle kirjeldusena saate edastada valikulise stringi. Näiteks,

 const x = Symbol('hey'); console.log(x); // Symbol(hey)

Juurdepääsu sümbol Kirjeldus

Sümboli kirjeldusele juurde pääsemiseks kasutame .operaatorit. Näiteks,

 const x = Symbol('hey'); console.log(x.description); // hey

Lisa sümbol objekti võtmena

Nurksulgudes saate objekti juurde võtmena lisada sümboleid (). Näiteks,

 let id = Symbol("id"); let person = ( name: "Jack", // adding symbol as a key (id): 123 // not "id": 123 ); console.log(person); // (name: "Jack", Symbol(id): 123)

Sümbolid ei sisaldu üksuses… Loopis

for… inLoop ei Kerrata üle Sümbolite omadused. Näiteks,

 let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )

Väljund

 nime vanus

Sümbolite kasutamise eelis objektil

Kui sama koodilõiku kasutatakse erinevates programmides, on parem seda kasutada Symbolsobjektivõtmes. Selle põhjuseks on see, et saate kasutada sama võtmenime erinevates koodides ja vältida dubleerimisprobleeme. Näiteks,

 let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;

Kui ülalnimetatud programmis kasutab personobjekti ka teine ​​programm, ei soovi te lisada atribuuti, millele saab juurde pääseda või mida teine ​​programm saab muuta. Seega Symbolloote kasutamisega ainulaadse atribuudi, mida saate kasutada.

Kui teine ​​programm peab kasutama ka atribuuti nimega id , lisage lihtsalt nimega sümbol idja dubleerimisprobleeme ei teki. Näiteks,

 let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";

Isegi kui ülalnimetatud programmis kasutatakse väärtuste salvestamiseks sama nime, on Symbolandmetüübil ainulaadne väärtus.

Kui ülaltoodud programmis oleks kasutatud stringivõtit, oleks hilisem programm atribuudi väärtust muutnud. Näiteks,

 let person = ( name: "Jack" ); // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value

Ülaltoodud programmis user.idkirjutab teine eelmise väärtuse üle.

Sümbolimeetodid

Symboliga on saadaval erinevaid meetodeid.

Meetod Kirjeldus
for() Otsib olemasolevaid sümboleid
keyFor() Tagastab jagatud sümbolivõtme globaalsest sümboliregistrist.
toSource() Tagastab stringi, mis sisaldab objekti Sümbol allikat
toString() Tagastab stringi, mis sisaldab sümboli kirjeldust
valueOf() Tagastab objekti Sümbol ürgväärtuse.

Näide: sümbolimeetodid

 // get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id

Sümbol Atribuudid

Atribuudid Kirjeldus
asyncIterator Tagastab objekti vaikimisi AsyncIteratori
hasInstance Määrab, kas konstruktori objekt tunneb objekti eksemplarina ära
isConcatSpreadable Näitab, kas objekti tuleks selle massiivi elementide suhtes lamedaks muuta
iterator Tagastab objekti vaikimisi iteraatori
match Vasted nöörile
matchAll Tagastab iteraatori, mis annab regulaaravaldise vaste stringile
replace Asendab stringi sobitatud alamstringid
search Tagastab regulaaravaldisega vastava stringi indeksi
split Jagab regulaaravaldisega sobivate indeksite juures stringi
species Loob tuletatud esemeid
toPrimitive Teisendab objekti primitiivseks väärtuseks
toStringTag Annab objekti vaikekirjelduse
description Tagastab stringi, mis sisaldab sümboli kirjeldust

Näide: Sümbolite omaduste näide

 const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ('a', 'b', 'c'); const numberArray = (1, 2, 3); // isConcatSpreadable property numberArray(Symbol.isConcatSpreadable) = false; let result = stringArray.concat(numberArray); console.log(result); // ("a", "b", "c", (1, 2, 3))

Huvitavad Artiklid...