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… in
boucle 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 Symbols
dans 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' person
objet 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é id
et 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 Symbol
type 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))