Heim >Web-Frontend >js-Tutorial >Symbol in Javascript mit Beispiel

Symbol in Javascript mit Beispiel

Susan Sarandon
Susan SarandonOriginal
2024-12-03 19:16:10515Durchsuche

Symbol in Javascript with Example

Symbol ist ein integriertes Objekt, dessen Konstruktor ein Symbol-Primitiv zurückgibt – auch als Symbolwert oder einfach als Symbol bezeichnet  – das ist garantiert einzigartig. Symbole werden häufig verwendet, um einem Objekt eindeutige Eigenschaftsschlüssel hinzuzufügen, die nicht mit Schlüsseln kollidieren, die ein anderer Code dem Objekt hinzufügen könnte, und die vor Mechanismen verborgen sind, die anderer Code normalerweise für den Zugriff auf das Objekt verwendet. Dies ermöglicht eine Form der schwachen Kapselung oder eine schwache Form des Verbergens von Informationen.

Beispiel: Verwendung von Symbolen als eindeutige Eigenschaftsschlüssel

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


Beispiel: Verwenden von Symbol.iterator, um ein Objekt iterierbar zu machen

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

Dieses Beispiel zeigt, wie Symbol.iterator die Iteration eines benutzerdefinierten Objekts mit for...of.

ermöglicht

Symbole, die in der beliebten NPM-Bibliothek verwendet werden können:

Beispiel: Verwendung eines Symbols in einer beliebten npm-Bibliothek

Ein bemerkenswertes Beispiel für die Verwendung von Symbolen ist das Express.js-Framework, ein weit verbreitetes Webanwendungs-Framework für Node.js. In Express.js wird Symbol verwendet, um eindeutige Eigenschaftsschlüssel zu definieren und so potenzielle Konflikte mit benutzerdefinierten Eigenschaften zu verhindern.

Code-Snippet von 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;

In diesem Snippet erstellt Symbol('router') ein eindeutiges Symbol, das als Eigenschaftsschlüssel für das App-Objekt dient. Dieser Ansatz stellt sicher, dass die Router-Eigenschaft eindeutig ist und andere Eigenschaften, die möglicherweise dem App-Objekt hinzugefügt werden, nicht beeinträchtigt.

Vorteile der Verwendung von Symbolen in Bibliotheken:

  • Einzigartigkeit:Symbole garantieren, dass Eigenschaftsschlüssel eindeutig sind, wodurch das Risiko versehentlicher Überschreibungen verringert wird.
  • Unveränderlichkeit: Einmal erstellte Symbole können nicht mehr geändert werden und bieten eine stabile Kennung.
  • Nichtaufzählbarkeit: Durch Symbole verschlüsselte Eigenschaften können nicht in Schleifen aufgezählt werden, was für interne Eigenschaften, die nicht offengelegt werden sollten, von Vorteil sein kann.

Das obige ist der detaillierte Inhalt vonSymbol in Javascript mit Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn