Simbol JavaScript (cu exemple)

În acest tutorial, veți afla despre JavaScript Symbol cu ​​ajutorul unor exemple.

Simbol JavaScript

JavaScript ES6 a introdus un nou tip de date primitiv numit Symbol. Simbolurile sunt imuabile (nu pot fi schimbate) și sunt unice. De exemplu,

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

Deși valoarea 1 și valoarea 2 conțin aceeași descriere, ele sunt diferite.

Crearea unui simbol

Folosiți Symbol()funcția pentru a crea un Symbol. De exemplu,

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

Puteți trece un șir opțional ca descriere a acestuia. De exemplu,

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

Descrierea simbolului de acces

Pentru a accesa descrierea unui simbol, folosim .operatorul. De exemplu,

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

Adăugați simbolul ca cheie de obiect

Puteți adăuga simboluri ca cheie într-un obiect folosind paranteze pătrate (). De exemplu,

 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)

Simbolurile nu sunt incluse în pentru … în buclă

for… inBucla nu iteraŃia asupra proprietăților simbolice. De exemplu,

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

Ieșire

 numele vârstei

Beneficiul utilizării simbolurilor în obiect

Dacă același fragment de cod este utilizat în diferite programe, atunci este mai bine să îl utilizați Symbolsîn cheia obiect. Acest lucru se datorează faptului că puteți utiliza același nume de cheie în coduri diferite și puteți evita problemele de duplicare. De exemplu,

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

În programul de mai sus, dacă personobiectul este folosit și de un alt program, atunci nu ați dori să adăugați o proprietate care poate fi accesată sau modificată de un alt program. Prin urmare Symbol, utilizând , creați o proprietate unică pe care o puteți utiliza.

Acum, dacă și celălalt program trebuie să utilizeze o proprietate numită id , trebuie doar să adăugați un simbol numit idși nu vor exista probleme de duplicare. De exemplu,

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

În programul de mai sus, chiar dacă același nume este folosit pentru a stoca valori, Symboltipul de date va avea o valoare unică.

În programul de mai sus, dacă s-a folosit cheia șir, atunci programul ulterior ar fi schimbat valoarea proprietății. De exemplu,

 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

În programul de mai sus, al doilea user.idsuprascrie valoarea anterioară.

Metode de simbol

Există diferite metode disponibile cu Symbol.

Metodă Descriere
for() Caută simboluri existente
keyFor() Returnează o cheie de simbol partajată din registrul global de simboluri.
toSource() Returnează un șir care conține sursa obiectului Symbol
toString() Returnează un șir care conține descrierea simbolului
valueOf() Returnează valoarea primitivă a obiectului Symbol.

Exemplu: Metode simbol

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

Proprietăți simbol

Proprietăți Descriere
asyncIterator Returnează AsyncIterator implicit pentru un obiect
hasInstance Determină dacă un obiect constructor recunoaște un obiect ca instanță
isConcatSpreadable Indică dacă un obiect trebuie aplatizat cu elementele sale de matrice
iterator Returnează iteratorul implicit pentru un obiect
match Se potrivește cu un șir
matchAll Returnează un iterator care produce potriviri ale expresiei regulate împotriva unui șir
replace Înlocuiește șirurile potrivite ale unui șir
search Returnează indexul într-un șir care se potrivește cu expresia regulată
split Împarte un șir la indicii care se potrivesc cu o expresie regulată
species Creează obiecte derivate
toPrimitive Convertește un obiect într-o valoare primitivă
toStringTag Oferă descrierea implicită a unui obiect
description Returnează un șir care conține descrierea simbolului

Exemplu: Proprietatea simbolului Exemplu

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

Articole interesante...