Symbole JavaScript (avec exemples)

Dans ce didacticiel, vous en apprendrez davantage sur le symbole JavaScript à l'aide d'exemples.

Symbole JavaScript

JavaScript ES6 a introduit un nouveau type de données primitif appelé Symbol. Les symboles sont immuables (ne peuvent pas être modifiés) et sont uniques. Par exemple,

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

Bien que valeur1 et valeur2 contiennent toutes deux la même description, elles sont différentes.

Création d'un symbole

Vous utilisez la Symbol()fonction pour créer un fichier Symbol. Par exemple,

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

Vous pouvez transmettre une chaîne facultative comme description. Par exemple,

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

Description du symbole d'accès

Pour accéder à la description d'un symbole, nous utilisons l' .opérateur. Par exemple,

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

Ajouter un symbole comme clé d'objet

Vous pouvez ajouter des symboles comme clé dans un objet à l'aide de crochets (). Par exemple,

 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)

Les symboles ne sont pas inclus dans for… in Loop

La for… inboucle n'itère pas les propriétés symboliques. Par exemple,

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

Production

 nom Age

Avantage de l'utilisation de symboles dans l'objet

Si le même extrait de code est utilisé dans divers programmes, il est préférable de l'utiliser Symbolsdans la clé d'objet. C'est parce que vous pouvez utiliser le même nom de clé dans différents codes et éviter les problèmes de duplication. Par exemple,

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

Dans le programme ci-dessus, si l' personobjet est également utilisé par un autre programme, vous ne voudriez pas ajouter une propriété accessible ou modifiée par un autre programme. Par conséquent, en utilisant Symbol, vous créez une propriété unique que vous pouvez utiliser.

Maintenant, si l'autre programme a également besoin d'utiliser une propriété nommée id , ajoutez simplement un symbole nommé idet il n'y aura pas de problèmes de duplication. Par exemple,

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

Dans le programme ci-dessus, même si le même nom est utilisé pour stocker des valeurs, le Symboltype de données aura une valeur unique.

Dans le programme ci-dessus, si la clé de chaîne a été utilisée, le programme ultérieur aurait changé la valeur de la propriété. Par exemple,

 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

Dans le programme ci-dessus, le second user.idécrase la valeur précédente.

Méthodes de symboles

Il existe différentes méthodes disponibles avec Symbol.

Méthode La description
for() Recherche des symboles existants
keyFor() Renvoie une clé de symbole partagée à partir du registre de symboles global.
toSource() Renvoie une chaîne contenant la source de l'objet Symbol
toString() Renvoie une chaîne contenant la description du symbole
valueOf() Renvoie la valeur primitive de l'objet Symbol.

Exemple: méthodes de symboles

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

Propriétés du symbole

Propriétés La description
asyncIterator Renvoie l'AsyncIterator par défaut pour un objet
hasInstance Détermine si un objet constructeur reconnaît un objet comme son instance
isConcatSpreadable Indique si un objet doit être aplati à ses éléments de tableau
iterator Renvoie l'itérateur par défaut d'un objet
match Correspond à une chaîne
matchAll Renvoie un itérateur qui produit des correspondances de l'expression régulière avec une chaîne
replace Remplace les sous-chaînes correspondantes d'une chaîne
search Renvoie l'index dans une chaîne qui correspond à l'expression régulière
split Divise une chaîne au niveau des index qui correspondent à une expression régulière
species Crée des objets dérivés
toPrimitive Convertit un objet en une valeur primitive
toStringTag Donne la description par défaut d'un objet
description Renvoie une chaîne contenant la description du symbole

Exemple: Exemple de propriétés de symbole

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

Articles intéressants...