Symbol JavaScript (s príkladmi)

V tomto výučbe sa na príkladoch dozviete o symbole JavaScript.

Symbol JavaScriptu

JavaScript ES6 predstavil nový primitívny dátový typ s názvom Symbol. Symboly sú nemenné (nemožno ich meniť) a sú jedinečné. Napríklad,

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

Aj keď hodnoty1 a value2 obsahujú rovnaký popis, líšia sa.

Vytvorenie symbolu

Pomocou tejto Symbol()funkcie vytvoríte a Symbol. Napríklad,

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

Ako popis môžete vložiť voliteľný reťazec. Napríklad,

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

Popis symbolu prístupu

Na prístup k popisu symbolu používame .operátor. Napríklad,

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

Pridajte symbol ako kľúč objektu

Symboly môžete pridať ako kľúč do objektu pomocou hranatých zátvoriek (). Napríklad,

 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)

Symboly nie sú obsiahnuté v … pre slučku

for… inSlučka nie je iteráciu symbolických vlastností. Napríklad,

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

Výkon

 vek mena

Výhoda použitia symbolov v objekte

Ak sa v rôznych programoch používa rovnaký útržok kódu, je lepšie ho použiť Symbolsv kľúči objektu. Je to preto, lebo môžete použiť rovnaký názov kľúča v rôznych kódoch a vyhnúť sa problémom s duplikáciou. Napríklad,

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

Ak vo vyššie uvedenom programe platí, že ak personobjekt používa aj iný program, nechcete pridať vlastnosť, ku ktorej má prístup alebo ktorá môže zmeniť iný program. Preto používaním Symbolvytvárate jedinečnú vlastnosť, ktorú môžete používať.

Teraz, ak druhý program tiež potrebuje použiť vlastnosť s názvom id , stačí pridať Symbol s názvom ida nebudú problémy s duplikáciou. Napríklad,

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

Vo vyššie uvedenom programe, aj keď sa na ukladanie hodnôt používa rovnaký názov, Symbolbude mať dátový typ jedinečnú hodnotu.

Ak by sa vo vyššie uvedenom programe použil reťazcový kľúč, potom by neskorší program zmenil hodnotu vlastnosti. Napríklad,

 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

Vo vyššie uvedenom programe druhá user.idprepíše predchádzajúcu hodnotu.

Metódy symbolov

So symbolom sú k dispozícii rôzne metódy.

Metóda Popis
for() Vyhľadá existujúce symboly
keyFor() Vráti zdieľaný kľúč symbolov z globálneho registra symbolov.
toSource() Vráti reťazec obsahujúci zdroj objektu Symbol
toString() Vráti reťazec obsahujúci popis Symbolu
valueOf() Vráti primitívnu hodnotu objektu Symbol.

Príklad: Metódy symbolov

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

Vlastnosti symbolov

Vlastnosti Popis
asyncIterator Vráti predvolený AsyncIterator pre objekt
hasInstance Určuje, či objekt konštruktora rozpozná objekt ako svoju inštanciu
isConcatSpreadable Označuje, či má byť objekt sploštený na prvky poľa
iterator Vráti predvolený iterátor pre objekt
match Zhoduje sa s reťazcom
matchAll Vráti iterátor, ktorý poskytuje zhody regulárneho výrazu s reťazcom
replace Nahrádza zodpovedajúce podreťazce reťazca
search Vráti index v rámci reťazca, ktorý sa zhoduje s regulárnym výrazom
split Rozdelí reťazec na indexy, ktoré sa zhodujú s regulárnym výrazom
species Vytvára odvodené objekty
toPrimitive Skonvertuje objekt na primitívnu hodnotu
toStringTag Poskytuje predvolený popis objektu
description Vráti reťazec obsahujúci popis symbolu

Príklad: Vlastnosti symbolov Príklad

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

Zaujímavé články...