Simbol JavaScript (s primeri)

V tej vadnici boste s pomočjo primerov spoznali simbol JavaScript.

JavaScript simbol

JavaScript ES6 je predstavil novo primitivno vrsto podatkov, imenovano Symbol. Simboli so nespremenljivi (jih ni mogoče spremeniti) in so edinstveni. Na primer

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

Čeprav vrednost1 in vrednost2 vsebujeta isti opis, sta različni.

Ustvarjanje simbola

S Symbol()funkcijo ustvarite datoteko Symbol. Na primer

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

Kot opis lahko posredujete neobvezen niz. Na primer

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

Opis simbola za dostop

Za dostop do opisa simbola uporabimo .operator. Na primer

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

Dodajte simbol kot ključ predmeta

Simbole lahko dodate kot ključ v predmetu z uporabo oglatih oklepajev (). Na primer

 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)

Simboli niso vključeni v za … v zanki

for… inZanke ne ponavlja več simbolnih lastnosti. Na primer

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

Izhod

 ime starost

Prednost uporabe simbolov v objektu

Če se isti delček kode uporablja v različnih programih, potem je bolje uporabiti Symbolsv ključu predmeta. To je zato, ker lahko isto ime ključa uporabite v različnih kodah in se izognete težavam s podvajanjem. Na primer

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

Če v zgornjem programu personobjekt uporablja tudi drug program, ne bi želeli dodati lastnosti, do katere lahko dostopa ali jo spreminja drug program. Tako z uporabo Symbolustvarite edinstveno lastnost, ki jo lahko uporabite.

Če mora tudi drugi program uporabiti lastnost z imenom id , samo dodajte imenovani simbol idin ne bo težav s podvajanjem. Na primer

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

V zgornjem programu, tudi če se isto ime uporablja za shranjevanje vrednosti, Symbolbo imel podatkovni tip edinstveno vrednost.

Če bi bil v zgornjem programu uporabljen nizni ključ, bi poznejši program spremenil vrednost lastnosti. Na primer

 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

V zgornjem programu drugi user.idprepiše prejšnjo vrednost.

Simbolne metode

Z Symbolom so na voljo različne metode.

Metoda Opis
for() Išče obstoječe simbole
keyFor() Vrne skupni ključ simbola iz globalnega registra simbolov.
toSource() Vrne niz, ki vsebuje vir predmeta Symbol
toString() Vrne niz, ki vsebuje opis simbola
valueOf() Vrne primitivno vrednost predmeta Symbol.

Primer: Simbolne metode

 // 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

Lastnosti simbola

Lastnosti Opis
asyncIterator Vrne privzeti AsyncIterator za objekt
hasInstance Določa, ali objekt konstruktorja prepozna objekt kot svoj primerek
isConcatSpreadable Označuje, ali je treba objekt sploščiti na elemente polja
iterator Vrne privzeti iterator za objekt
match Ujema se z vrvico
matchAll Vrne iterator, ki poda ujemanja regularnega izraza z nizom
replace Nadomešča ujemajoče se podnize niza
search Vrne indeks v nizu, ki se ujema z regularnim izrazom
split Razdeli niz na indekse, ki se ujemajo z regularnim izrazom
species Ustvari izpeljane predmete
toPrimitive Pretvori objekt v primitivno vrednost
toStringTag Daje privzeti opis predmeta
description Vrne niz, ki vsebuje opis simbola

Primer: Primer lastnosti simbola

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

Zanimive Članki...