Suche…
Syntax
- Symbol()
- Symbol (Beschreibung)
- Symbol.toString ()
Bemerkungen
ECMAScript 2015-Spezifikation 19.4 Symbole
Grundlagen des primitiven Symboltyps
Symbol
ist ein neuer primitiver Typ in ES6. Symbole werden hauptsächlich als Eigenschaftsschlüssel verwendet. Eine ihrer Hauptmerkmale besteht darin, dass sie eindeutig sind , auch wenn sie dieselbe Beschreibung haben. Dies bedeutet, dass sie nie mit anderen Namen, die ein symbol
oder eine string
sind, in Konflikt stehen.
const MY_PROP_KEY = Symbol();
const obj = {};
obj[MY_PROP_KEY] = "ABC";
console.log(obj[MY_PROP_KEY]);
In diesem Beispiel wäre das Ergebnis von console.log
ABC
.
Sie können auch Symbole benannt haben wie:
const APPLE = Symbol('Apple');
const BANANA = Symbol('Banana');
const GRAPE = Symbol('Grape');
Jeder dieser Werte ist eindeutig und kann nicht überschrieben werden.
Die (description)
eines optionalen Parameters (description)
beim Erstellen von Grundsymbolen kann zum Debuggen verwendet werden, jedoch nicht zum Zugriff auf das Symbol selbst (siehe das Symbol.for()
Beispiel für eine Möglichkeit, globale gemeinsam genutzte Symbole zu registrieren / Symbol.for()
).
Umwandlung eines Symbols in einen String
Im Gegensatz zu den meisten anderen JavaScript-Objekten werden Symbole beim Verketten nicht automatisch in eine Zeichenfolge konvertiert.
let apple = Symbol('Apple') + ''; // throws TypeError!
Stattdessen müssen sie bei Bedarf explizit in eine Zeichenfolge konvertiert werden (z. B., um eine Textbeschreibung des Symbols zu erhalten, das in einer Debug-Nachricht verwendet werden kann), indem sie die toString
Methode oder den String
Konstruktor verwenden.
const APPLE = Symbol('Apple');
let str1 = APPLE.toString(); // "Symbol(Apple)"
let str2 = String(APPLE); // "Symbol(Apple)"
Verwenden von Symbol.for () zum Erstellen globaler, gemeinsamer Symbole
Mit der Symbol.for
Methode können Sie globale Symbole nach Namen registrieren und nachschlagen. Beim ersten Aufruf mit einem bestimmten Schlüssel wird ein neues Symbol erstellt und der Registrierung hinzugefügt.
let a = Symbol.for('A');
Symbol.for('A')
Sie das nächste Mal Symbol.for('A')
aufrufen, wird dasselbe Symbol anstelle eines neuen Symbols zurückgegeben (im Gegensatz zu Symbol('A')
wodurch ein neues, eindeutiges Symbol entsteht, das die gleiche Beschreibung hat ).
a === Symbol.for('A') // true
aber
a === Symbol('A') // false