Symbol() Konstruktor
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2015 browserübergreifend verfügbar.
Die Symbol() Funktion gibt primitive Werte vom Typ Symbol zurück.
Probieren Sie es aus
const symbol1 = Symbol();
const symbol2 = Symbol(42);
const symbol3 = Symbol("foo");
console.log(typeof symbol1);
// Expected output: "symbol"
console.log(symbol2 === 42);
// Expected output: false
console.log(symbol3.toString());
// Expected output: "Symbol(foo)"
console.log(Symbol("foo") === Symbol("foo"));
// Expected output: false
Syntax
Symbol()
Symbol(description)
Parameter
descriptionOptional-
Ein String. Eine Beschreibung des Symbols, die zum Debuggen genutzt werden kann, jedoch nicht, um auf das Symbol selbst zuzugreifen.
Beispiele
>Symbole erstellen
Um ein neues primitives Symbol zu erstellen, schreiben Sie Symbol() mit einem optionalen
String als Beschreibung:
const sym1 = Symbol();
const sym2 = Symbol("foo");
const sym3 = Symbol("foo");
Der obige Code erstellt drei neue Symbole. Beachten Sie, dass Symbol("foo") den String "foo" nicht in ein Symbol umwandelt. Es erstellt jedes Mal ein neues Symbol:
Symbol("foo") === Symbol("foo"); // false
new Symbol()
Die folgende Syntax mit dem new Operator wird einen
TypeError werfen:
const sym = new Symbol(); // TypeError
Dies verhindert, dass Autoren ein explizites Symbol-Wrapper-Objekt anstelle eines neuen Symbolwertes erstellen, was überraschend sein könnte, da das Erstellen expliziter Wrapper-Objekte um primitive Datentypen im Allgemeinen möglich ist (zum Beispiel,
new Boolean, new String und new Number).
Wenn Sie wirklich ein Symbol-Wrapper-Objekt erstellen möchten, können Sie die
Object() Funktion verwenden:
const sym = Symbol("foo");
const symObj = Object(sym);
typeof sym; // "symbol"
typeof symObj; // "object"
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-symbol-constructor> |
Browser-Kompatibilität
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.