JavaScript-symbool (met voorbeelden)

In deze tutorial leert u met behulp van voorbeelden over JavaScript Symbol.

JavaScript-symbool

De JavaScript ES6 introduceerde een nieuw primitief gegevenstype genaamd Symbol. Symbolen zijn onveranderlijk (kunnen niet worden gewijzigd) en zijn uniek. Bijvoorbeeld,

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

Hoewel waarde1 en waarde2 beide dezelfde beschrijving bevatten, zijn ze verschillend.

Symbool maken

U gebruikt de Symbol()functie om een Symbol. Bijvoorbeeld,

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

U kunt een optionele string doorgeven als beschrijving. Bijvoorbeeld,

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

Toegangssymbool Beschrijving

Om toegang te krijgen tot de beschrijving van een symbool, gebruiken we de .operator. Bijvoorbeeld,

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

Voeg een symbool toe als een objectsleutel

U kunt symbolen als sleutel aan een object toevoegen met vierkante haken (). Bijvoorbeeld,

 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)

Symbolen zijn niet opgenomen in for… in Loop

De for… inlus herhaalt symbolische eigenschappen niet. Bijvoorbeeld,

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

Uitvoer

 naam leeftijd

Voordeel van het gebruik van symbolen in objecten

Als hetzelfde codefragment in verschillende programma's wordt gebruikt, is het beter om het Symbolsin de objectsleutel te gebruiken. Het is omdat u dezelfde sleutelnaam in verschillende codes kunt gebruiken en dubbele problemen kunt voorkomen. Bijvoorbeeld,

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

Als het personobject in het bovenstaande programma ook door een ander programma wordt gebruikt, zou u geen eigenschap willen toevoegen die kan worden geopend of gewijzigd door een ander programma. Door te gebruiken Symbol, creëer je een unieke eigenschap die je kunt gebruiken.

Als het andere programma nu ook een eigenschap met de naam id moet gebruiken , voegt u gewoon een symbool met de naam toe iden er zullen geen duplicatieproblemen zijn. Bijvoorbeeld,

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

In het bovenstaande programma, zelfs als dezelfde naam wordt gebruikt om waarden op te slaan, zal het Symboldatatype een unieke waarde hebben.

Als in het bovenstaande programma de string-sleutel werd gebruikt, zou het latere programma de waarde van de eigenschap hebben gewijzigd. Bijvoorbeeld,

 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

In het bovenstaande programma user.idoverschrijft de tweede de vorige waarde.

Symbool methoden

Er zijn verschillende methoden beschikbaar met Symbol.

Methode Omschrijving
for() Zoekt naar bestaande symbolen
keyFor() Retourneert een gedeelde symboolsleutel uit het algemene symboolregister.
toSource() Retourneert een tekenreeks die de bron van het Symbol-object bevat
toString() Retourneert een tekenreeks met de beschrijving van het symbool
valueOf() Retourneert de primitieve waarde van het Symbol-object.

Voorbeeld: symboolmethoden

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

Symbooleigenschappen

Eigendommen Omschrijving
asyncIterator Retourneert de standaard AsyncIterator voor een object
hasInstance Bepaalt of een constructorobject een object herkent als zijn instantie
isConcatSpreadable Geeft aan of een object moet worden afgevlakt tot zijn array-elementen
iterator Retourneert de standaard iterator voor een object
match Komt overeen met een string
matchAll Retourneert een iterator die overeenkomsten oplevert van de reguliere expressie voor een tekenreeks
replace Vervangt overeenkomende subtekenreeksen van een tekenreeks
search Retourneert de index binnen een tekenreeks die overeenkomt met de reguliere expressie
split Splitst een tekenreeks op de indices die overeenkomen met een reguliere expressie
species Maakt afgeleide objecten
toPrimitive Converteert een object naar een primitieve waarde
toStringTag Geeft de standaardbeschrijving van een object
description Retourneert een tekenreeks met de beschrijving van het symbool

Voorbeeld: Voorbeeld van symbooleigenschappen

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

Interessante artikelen...