JavaScript simbol (s primjerima)

U ovom ćete tutorijalu uz primjere naučiti o JavaScript simbolu.

JavaScript simbol

JavaScript ES6 predstavio je novi primitivni tip podataka tzv Symbol. Simboli su nepromjenjivi (ne mogu se mijenjati) i jedinstveni su. Na primjer,

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

Iako vrijednost1 i vrijednost2 sadrže isti opis, oni se razlikuju.

Stvaranje simbola

Symbol()Funkciju koristite za stvaranje a Symbol. Na primjer,

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

Kao opis možete dodati neobavezni niz. Na primjer,

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

Opis simbola pristupa

Za pristup opisu simbola koristimo .operator. Na primjer,

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

Dodajte simbol kao ključ objekta

Možete dodati simbole kao ključ u objekt pomoću uglatih zagrada (). Na primjer,

 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 nisu uključeni u for … u Loop

for… inPetlje ne mijenjajte više simboličkih svojstva. Na primjer,

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

Izlaz

 ime dob

Prednost upotrebe simbola u objektu

Ako se isti isječak koda koristi u raznim programima, onda je bolje koristiti Symbolsu objektnom ključu. To je zato što možete koristiti isti naziv ključa u različitim kodovima i izbjeći probleme s dupliciranjem. Na primjer,

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

U gornjem programu, ako personobjekt koristi i drugi program, tada ne biste željeli dodati svojstvo kojem drugi program može pristupiti ili ga promijeniti. Stoga korištenjem Symbolstvarate jedinstveno svojstvo koje možete koristiti.

Ako drugi program također treba koristiti svojstvo s imenom id , samo dodajte simbol s imenom idi neće biti problema s dupliciranjem. Na primjer,

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

U gore navedenom programu, čak i ako se isti naziv koristi za pohranu vrijednosti, Symbolvrsta podataka imat će jedinstvenu vrijednost.

U gornjem programu, da je korišten ključ niza, tada bi kasniji program promijenio vrijednost svojstva. Na primjer,

 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

U gornjem programu drugi user.idprepisuje prethodnu vrijednost.

Metode simbola

Uz Symbol su dostupne razne metode.

Metoda Opis
for() Pretražuje postojeće simbole
keyFor() Vraća zajednički ključ simbola iz globalnog registra simbola.
toSource() Vraća niz koji sadrži izvor objekta Symbol
toString() Vraća niz koji sadrži opis simbola
valueOf() Vraća primitivnu vrijednost objekta Symbol.

Primjer: Metode simbola

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

Svojstva simbola

Svojstva Opis
asyncIterator Vraća zadani AsyncIterator za objekt
hasInstance Određuje prepoznaje li objekt konstruktora objekt kao svoju instancu
isConcatSpreadable Označava treba li objekt izravnati na elemente niza
iterator Vraća zadani iterator za objekt
match Podudara se s nizom
matchAll Vraća iterator koji daje podudaranja regularnog izraza s nizom
replace Zamjenjuje podudaranja podniza niza
search Vraća indeks unutar niza koji odgovara regularnom izrazu
split Dijeli niz na indeksima koji se podudaraju s regularnim izrazom
species Stvara izvedene objekte
toPrimitive Pretvara objekt u primitivnu vrijednost
toStringTag Daje zadani opis objekta
description Vraća niz koji sadrži opis simbola

Primjer: Primjer svojstava 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))

Zanimljivi članci...