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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow