„JavaScript“ simbolis (su pavyzdžiais)

Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ simbolį.

„JavaScript“ simbolis

„JavaScript ES6“ pristatė naują primityvų duomenų tipą, vadinamą Symbol. Simboliai yra nekintami (negali būti pakeisti) ir yra unikalūs. Pavyzdžiui,

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

Nors „value1“ ir „value2“ aprašymai yra vienodi, jie skiriasi.

Kuriamas simbolis

Symbol()Funkciją naudojate norėdami sukurti Symbol. Pavyzdžiui,

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

Galite perduoti pasirenkamą eilutę kaip jos aprašą. Pavyzdžiui,

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

Prieigos simbolio aprašymas

Norėdami pasiekti simbolio aprašymą, mes naudojame .operatorių. Pavyzdžiui,

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

Pridėti simbolį kaip objekto raktą

Naudodami laužtinius skliaustus, galite pridėti simbolių kaip raktą objekte (). Pavyzdžiui,

 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)

Simboliai neįtraukti į… „Loop“

for… inKilpa ne kartoti per Simbolinės savybių. Pavyzdžiui,

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

Rezultatas

 vardo amžius

Simbolių naudojimo objekte nauda

Jei tas pats kodo fragmentas naudojamas įvairiose programose, tai geriau naudoti Symbolsobjekto rakte. Taip yra todėl, kad tą patį rakto pavadinimą galite naudoti skirtinguose koduose ir išvengti dubliavimo problemų. Pavyzdžiui,

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

Ankstesnėje programoje, jei personobjektą taip pat naudoja kita programa, tuomet nenorėtumėte pridėti ypatybės, prie kurios gali prisijungti ar ją pakeisti kita programa. Taigi naudodamiesi Symbolsukuriate unikalią nuosavybę, kurią galite naudoti.

Dabar, jei kita programa taip pat turi naudoti ypatybę pavadinimu id , tiesiog pridėkite pavadintą simbolį idir nebus dubliavimo problemų. Pavyzdžiui,

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

Ankstesnėje programoje, net jei tas pats pavadinimas naudojamas vertėms saugoti, Symbolduomenų tipas turės unikalią vertę.

Ankstesnėje programoje, jei buvo naudojamas eilutės raktas, vėlesnė programa būtų pakeitusi nuosavybės vertę. Pavyzdžiui,

 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

Ankstesnėje programoje antroji user.idperrašo ankstesnę vertę.

Simbolių metodai

„Symbol“ yra įvairių būdų.

Metodas apibūdinimas
for() Ieško esamų simbolių
keyFor() Grąžina bendrojo simbolio raktą iš visuotinio simbolių registro.
toSource() Pateikia eilutę, kurioje yra objekto „Symbol“ šaltinis
toString() Pateikia eilutę su simbolio aprašymu
valueOf() Pateikia pirminę objekto „Symbol“ vertę.

Pavyzdys: simbolių metodai

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

Simbolio ypatybės

Savybės apibūdinimas
asyncIterator Grąžina numatytąjį objekto „AsyncIterator“
hasInstance Nustato, ar konstruktoriaus objektas atpažįsta objektą kaip jo egzempliorių
isConcatSpreadable Nurodo, ar objektas turėtų būti prilygintas jo masyvo elementams
iterator Grąžina numatytąjį objekto iteratorių
match Degtukai prieš stygą
matchAll Pateikia iteratorių, kuris pateikia eilinės išraiškos atitikmenis nuo eilutės
replace Pakeičia suderintas eilutės eilutes
search Grąžina eilutės, kuri atitinka reguliariąją išraišką, indeksą
split Padalija eilutę ties indeksais, kurie atitinka įprastą išraišką
species Kuria išvestinius objektus
toPrimitive Konvertuoja objektą į primityvią vertę
toStringTag Pateikia numatytąjį objekto aprašymą
description Pateikia eilutę su simbolio aprašymu

Pavyzdys: simbolių ypatybių pavyzdys

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

Įdomios straipsniai...