JavaScript-symbol (med exempel)

I den här handledningen lär du dig JavaScript-symbolen med hjälp av exempel.

JavaScript-symbol

JavaScript ES6 introducerade en ny primitiv datatyp som heter Symbol. Symboler är oföränderliga (kan inte ändras) och är unika. Till exempel,

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

Även om värde1 och värde2 innehåller samma beskrivning är de olika.

Skapa symbol

Du använder Symbol()funktionen för att skapa en Symbol. Till exempel,

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

Du kan skicka en valfri sträng som beskrivning. Till exempel,

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

Åtkomstsymbol Beskrivning

För att komma åt beskrivningen av en symbol använder vi .operatören. Till exempel,

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

Lägg till symbol som objektnyckel

Du kan lägga till symboler som en nyckel i ett objekt med hakparenteser (). Till exempel,

 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)

Symboler ingår inte i för … i Loop

Den for… inslinga inte iterera över symboliska egenskaper. Till exempel,

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

Produktion

 namn ålder

Fördelen med att använda symboler i objektet

Om samma kodavsnitt används i olika program är det bättre att använda det Symbolsi objektnyckeln. Det beror på att du kan använda samma nyckelnamn i olika koder och undvika dubbleringsproblem. Till exempel,

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

I ovanstående program, om personobjektet också används av ett annat program, skulle du inte vilja lägga till en egenskap som kan nås eller ändras av ett annat program. Därför Symbolskapar du en unik egenskap som du kan använda genom att använda.

Nu, om det andra programmet också behöver använda en egenskap med namnet id , lägg bara till en symbol med namnet idså kommer det inte att finnas dubbleringsproblem. Till exempel,

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

I ovanstående program, även om samma namn används för att lagra värden, Symbolkommer datatypen att ha ett unikt värde.

I ovanstående program, om strängnyckeln användes, skulle det senare programmet ha ändrat värdet på egenskapen. Till exempel,

 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

I programmet ovan user.idskriver den andra över det tidigare värdet.

Symbolmetoder

Det finns olika metoder tillgängliga med Symbol.

Metod Beskrivning
for() Söker efter befintliga symboler
keyFor() Returnerar en delad symbolnyckel från det globala symbolregistret.
toSource() Returnerar en sträng som innehåller källan till symbolobjektet
toString() Returnerar en sträng som innehåller beskrivningen av symbolen
valueOf() Returnerar det primitiva värdet för symbolobjektet.

Exempel: Symbolmetoder

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

Symbolegenskaper

Egenskaper Beskrivning
asyncIterator Returnerar standard AsyncIterator för ett objekt
hasInstance Avgör om ett konstruktörobjekt känner igen ett objekt som dess instans
isConcatSpreadable Indikerar om ett objekt ska platta till dess arrayelement
iterator Returnerar standard iteratorn för ett objekt
match Matchar mot en sträng
matchAll Returnerar en iterator som ger matchningar av det reguljära uttrycket mot en sträng
replace Ersätter matchade strängar av en sträng
search Returnerar indexet i en sträng som matchar det reguljära uttrycket
split Delar en sträng på de index som matchar ett reguljärt uttryck
species Skapar härledda objekt
toPrimitive Konverterar ett objekt till ett primitivt värde
toStringTag Ger standardbeskrivningen för ett objekt
description Returnerar en sträng som innehåller beskrivningen av symbolen

Exempel: Symbolegenskaper Exempel

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

Intressanta artiklar...