Maison >interface Web >js tutoriel >Symbole en Javascript avec exemple

Symbole en Javascript avec exemple

Susan Sarandon
Susan Sarandonoriginal
2024-12-03 19:16:10568parcourir

Symbol in Javascript with Example

Symbol est un objet intégré dont le constructeur renvoie une primitive de symbole - également appelée Valeur de symbole ou simplement un Symbole  — c'est garanti unique. Les symboles sont souvent utilisés pour ajouter des clés de propriété uniques à un objet qui n'entreront pas en collision avec les clés qu'un autre code pourrait ajouter à l'objet et qui sont masquées de tout mécanisme qu'un autre code utilisera généralement pour accéder à l'objet. Cela permet une forme d'encapsulation faible ou une forme faible de masquage d'informations.

Exemple : utilisation d'un symbole comme clés de propriété uniques

javascript
Copy code
// Create unique symbols
const id = Symbol('id');
const name = Symbol('name');

// Create an object with symbol-based properties
const user = {
    [id]: 101,
    [name]: 'Alice',
    age: 25
};

// Access the symbol properties
console.log(user[id]); // 101
console.log(user[name]); // "Alice"

// Add another property using a symbol
const email = Symbol('email');
user[email] = 'alice@example.com';

console.log(user[email]); // "alice@example.com"

// Symbols are not enumerable in for...in loops or Object.keys
for (const key in user) {
    console.log(key); // Only "age" is logged
}

console.log(Object.keys(user)); // ["age"]

// You can still access all properties if you know the symbol keys
console.log(Object.getOwnPropertySymbols(user)); // [Symbol(id), Symbol(name), Symbol(email)]


Exemple : utilisation de Symbol.iterator pour rendre un objet itérable

javascript
Copy code
const collection = {
    items: ['apple', 'banana', 'cherry'],
    [Symbol.iterator]() {
        let index = 0;
        const items = this.items;
        return {
            next() {
                if (index < items.length) {
                    return { value: items[index++], done: false };
                } else {
                    return { done: true };
                }
            }
        };
    }
};

// Iterate over the object
for (const item of collection) {
    console.log(item);
}
// Output:
// apple
// banana
// cherry

Cet exemple montre comment Symbol.iterator permet d'itérer un objet personnalisé en utilisant for...of.

Symboles utilisables dans la bibliothèque npm populaire :

Exemple : Utilisation de symboles dans une bibliothèque npm populaire

Un exemple notable d'utilisation de Symbol se trouve dans le framework Express.js, un framework d'application Web largement utilisé pour Node.js. Dans Express.js, Symbol est utilisé pour définir des clés de propriété uniques, évitant ainsi les conflits potentiels avec les propriétés définies par l'utilisateur.

Extrait de code d'Express.js :

javascript
Copy code
// In Express.js, a symbol is used to define a unique property key
const app = express();
app[Symbol('router')] = router;

Dans cet extrait, Symbol('router') crée un symbole unique qui sert de clé de propriété pour l'objet application. Cette approche garantit que la propriété du routeur est distincte et n'interfère pas avec d'autres propriétés qui pourraient être ajoutées à l'objet application.

Avantages de l'utilisation de symboles dans les bibliothèques :

  • Unicité : Les symboles garantissent que les clés de propriété sont uniques, réduisant ainsi le risque d'écrasement accidentel.
  • Immuabilité : Une fois créés, les symboles ne peuvent pas être modifiés, fournissant un identifiant stable.
  • Non-énumérable : Les propriétés saisies par des symboles ne sont pas énumérables dans les boucles, ce qui peut être bénéfique pour les propriétés internes qui ne doivent pas être exposées.

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!

Déclaration:
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