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.
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)]
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.
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 :
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!