Maison > interface Web > Questions et réponses frontales > Quelle est la fonction des symboles dans es6

Quelle est la fonction des symboles dans es6

WBOY
Libérer: 2022-04-08 10:39:42
original
3893 Les gens l'ont consulté

Le rôle du symbole dans es6 : 1. Utilisé comme nom d'attribut. Le symbole représente une valeur unique, ce qui peut garantir que les attributs n'ont pas de noms en double et sont également accessibles en dehors de la classe. est un nouveau type de données primitif, la syntaxe est "const name=Symbol("value")".

Quelle est la fonction des symboles dans es6

L'environnement d'exploitation de ce tutoriel : système Windows 10, ECMAScript version 6.0, ordinateur Dell G3.

Quel est le rôle du symbole dans es6

ES6 introduit un nouveau type de données primitif Symbol, qui représente une valeur unique. La plus grande utilisation est de définir le nom d'attribut unique d'un objet.

En plus des types de données Nombre, Chaîne, Booléen, Objet, nul et non défini, les types de données ES6 ajoutent également un symbole.

Utilisation de base

La pile de fonctions Symbol ne peut pas utiliser la nouvelle commande car Symbol est un type de données primitif, pas un objet. Vous pouvez accepter une chaîne comme paramètre pour fournir une description du symbole nouvellement créé, qui peut être affichée sur la console ou utilisée comme chaîne pour une différenciation facile.

let sy = Symbol("KK");
console.log(sy);   // Symbol(KK)
typeof(sy);        // "symbol"
 
// 相同参数 Symbol() 返回的值不相等
let sy1 = Symbol("kk"); 
sy === sy1;       // false
Copier après la connexion

Comme nom d'attribut

Utilisation

Étant donné que la valeur de chaque symbole n'est pas égale, le symbole est utilisé comme nom d'attribut de l'objet pour garantir que les attributs n'ont pas de noms en double.

Quelle est la fonction des symboles dans es6

Le symbole ne peut pas être utilisé comme nom de propriété d'objet. L'opérateur . doit être utilisé et les crochets doivent être utilisés. Étant donné que l'opérateur . est suivi d'une chaîne, l'attribut sy de chaîne est obtenu, et non l'attribut sy de valeur de symbole.

let syObject = {};
syObject[sy] = "kk";
 
syObject[sy];  // "kk"
syObject.sy;   // undefined
Copier après la connexion

Notes

Lorsque la valeur Symbol est utilisée comme nom d'attribut, l'attribut est un attribut public, pas un attribut privé, et est accessible en dehors de la classe. Mais il n'apparaîtra pas dans les boucles de for...in et for...of, et il ne sera pas non plus renvoyé par Object.keys() et Object.getOwnPropertyNames(). Si vous souhaitez lire la propriété Symbol d'un objet, vous pouvez l'obtenir via Object.getOwnPropertySymbols() et Reflect.ownKeys().

let syObject = {};
syObject[sy] = "kk";
console.log(syObject);
 
for (let i in syObject) {
  console.log(i);
}    // 无输出
 
Object.keys(syObject);                     // []
Object.getOwnPropertySymbols(syObject);    // [Symbol(key1)]
Reflect.ownKeys(syObject);                 // [Symbol(key1)]
Copier après la connexion

Définir des constantes

Utilisez des chaînes pour représenter les constantes dans ES5. Par exemple :

const COLOR_RED = "red";
const COLOR_YELLOW = "yellow";
const COLOR_BLUE = "blue";
Copier après la connexion

Mais utiliser des chaînes ne garantit pas que les constantes sont uniques, ce qui posera quelques problèmes :

Mais utilisez Symbol pour définir des constantes, afin que les valeurs de cet ensemble de constantes soient garanties d'être égales. Modifiez l'exemple ci-dessus en utilisant Symbol. La valeur de

const COLOR_RED = Symbol("red");
const COLOR_YELLOW = Symbol("yellow");
const COLOR_BLUE = Symbol("blue");
 
function ColorException(message) {
   this.message = message;
   this.name = "ColorException";
}
function getConstantName(color) {
    switch (color) {
        case COLOR_RED :
            return "COLOR_RED";
        case COLOR_YELLOW :
            return "COLOR_YELLOW ";
        case COLOR_BLUE:
            return "COLOR_BLUE";
        default:
            throw new ColorException("Can't find this color");
    }
}
 
try {
   
   var color = "green"; // green 引发异常
   var colorName = getConstantName(color);
} catch (e) {
   var colorName = "unknown";
   console.log(e.message, e.name); // 传递异常对象到错误处理
}
Copier après la connexion

Symbol est unique, il n'y aura donc pas de constantes avec la même valeur, ce qui garantit que le commutateur s'exécute comme prévu par le code.

【Recommandations associées : tutoriel vidéo javascript, front-end web

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
es6
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal