Grundlegende Verwendung von Symbol

Symbol ist ein eindeutiger Wert, der von der Symbol-Funktion generiert wird und als Objekteigenschaftsname verwendet werden kann.

Vor ES6 stellten alle Eigenschaften von Objekten Zeichenfolgen dar. Nachdem ES6 den grundlegenden Datentyp Symbol hinzugefügt hatte , kann Symbol als Eigenschaftswert von Objekten verwendet werden.

1. Warum müssen Sie Symbol verwenden?

Vor ES6 lagen die Eigenschaftsnamen von Objekten alle in Form von Zeichenfolgen vor, was leicht zu Konflikten bei Eigenschaftsnamen führen konnte .

Zum Beispiel gibt es ein Objekt und wir möchten ihm ein neues Attribut und einen neuen Wert hinzufügen, aber wir sind uns nicht sicher, was darin enthalten ist . Es ist leicht, einen Konflikt zu verursachen, wodurch ein bestimmtes Attribut darin überschrieben wird .

Symbol soll das obige Problem lösen, um einen eindeutigen Wert zu erzeugen.

  • Der Symbolwert wird von der Symbolfunktion generiert, die nach der Generierung als Attributname verwendet werden kann;
  • In ES6 können Objekteigenschaftsnamen Zeichenfolgen oder Symbolwerte verwenden.

Auch wenn der Wert von Symbol mehrmals erstellt wird, sind sie unterschiedlich: Der Wert, der jedes Mal erstellt wird, nachdem die Symbol-Funktion ausgeführt wurde, ist eindeutig; wir können beim Erstellen des Symbol-Werts auch eine Beschreibung übergeben: Dies ist eine neue Ergänzung in ES2019 ( ES10) Eigenschaften;

2. Symbol als Attributname

const s1 = Symbol()
      const s2 = Symbol("cba")
      
      const obj = {}
      //写法一: 属性名赋值
      obj[s1] = "abc"
      obj[s2] = "cba"

      console.log(obj[s1]);
      console.log(obj[s2]);

      // 写法二: Object.defineProperty
      Object.defineProperty(obj, s1, {
        enumerable: true,
        configurable: true,
        writable: true,
        value: "abc"
      })

      // 写法三: 定义字面量是直接使用
      const info ={
        [s1]: "abc",
        [s2]: "cba"
      }

3. Symbol mit gleichem Wert

Was ist, wenn wir einen Symbolwert mit demselben Wert erstellen möchten?

  • Wir können dies mit der Symbol.for-Methode tun;
  • Und wir können den entsprechenden Schlüssel über die Methode Symbol.keyFor erhalten.

 

Supongo que te gusta

Origin blog.csdn.net/m0_51636525/article/details/125235187
Recomendado
Clasificación