Simbolo JavaScript (con esempi)

In questo tutorial imparerai a conoscere JavaScript Symbol con l'aiuto di esempi.

Simbolo JavaScript

JavaScript ES6 ha introdotto un nuovo tipo di dati primitivo chiamato Symbol. I simboli sono immutabili (non possono essere modificati) e sono unici. Per esempio,

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

Sebbene valore1 e valore2 contengano entrambi la stessa descrizione, sono diversi.

Creazione di simboli

Si utilizza la Symbol()funzione per creare un file Symbol. Per esempio,

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

Puoi passare una stringa opzionale come descrizione. Per esempio,

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

Descrizione del simbolo di accesso

Per accedere alla descrizione di un simbolo utilizziamo l' .operatore. Per esempio,

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

Aggiungi simbolo come chiave oggetto

Puoi aggiungere simboli come chiave in un oggetto utilizzando le parentesi quadre (). Per esempio,

 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)

I simboli non sono inclusi in for … in Loop

Il for… inciclo non itera sulle proprietà simboliche. Per esempio,

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

Produzione

 nome età

Vantaggio dell'utilizzo di simboli nell'oggetto

Se lo stesso frammento di codice viene utilizzato in vari programmi, è meglio utilizzarlo Symbolsnella chiave dell'oggetto. È perché puoi utilizzare lo stesso nome chiave in codici diversi ed evitare problemi di duplicazione. Per esempio,

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

Nel programma precedente, se l' personoggetto viene utilizzato anche da un altro programma, non si desidera aggiungere una proprietà a cui è possibile accedere o modificare da un altro programma. Quindi Symbol, usando , crei una proprietà unica che puoi usare.

Ora, se anche l'altro programma deve utilizzare una proprietà denominata id , è sufficiente aggiungere un simbolo denominato ide non ci saranno problemi di duplicazione. Per esempio,

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

Nel programma precedente, anche se viene utilizzato lo stesso nome per memorizzare i valori, il Symboltipo di dati avrà un valore univoco.

Nel programma precedente, se fosse stata utilizzata la chiave stringa, il programma successivo avrebbe modificato il valore della proprietà. Per esempio,

 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

Nel programma sopra, il secondo user.idsovrascrive il valore precedente.

Metodi dei simboli

Sono disponibili vari metodi con Symbol.

Metodo Descrizione
for() Cerca simboli esistenti
keyFor() Restituisce una chiave di simboli condivisa dal registro dei simboli globale.
toSource() Restituisce una stringa contenente l'origine dell'oggetto Symbol
toString() Restituisce una stringa contenente la descrizione del simbolo
valueOf() Restituisce il valore primitivo dell'oggetto Symbol.

Esempio: metodi di simboli

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

Proprietà dei simboli

Proprietà Descrizione
asyncIterator Restituisce il AsyncIterator predefinito per un oggetto
hasInstance Determina se un oggetto costruttore riconosce un oggetto come sua istanza
isConcatSpreadable Indica se un oggetto deve essere appiattito ai suoi elementi dell'array
iterator Restituisce l'iteratore predefinito per un oggetto
match Corrisponde a una stringa
matchAll Restituisce un iteratore che restituisce corrispondenze dell'espressione regolare su una stringa
replace Sostituisce le sottostringhe corrispondenti di una stringa
search Restituisce l'indice all'interno di una stringa che corrisponde all'espressione regolare
split Divide una stringa in corrispondenza degli indici che corrispondono a un'espressione regolare
species Crea oggetti derivati
toPrimitive Converte un oggetto in un valore primitivo
toStringTag Fornisce la descrizione predefinita di un oggetto
description Restituisce una stringa contenente la descrizione del simbolo

Esempio: Esempio di proprietà del simbolo

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

Articoli interessanti...