Lassen Sie uns ausführlich über den Symboldatentyp in ES6 sprechen

Lassen Sie uns ausführlich über den Symboldatentyp in ES6 sprechen

Symboldatentyp

In der js-Sprache gab es vor ES6 6 Datentypen.

ES6 schlägt den Symboldatentyp neu vor, daher ist Symbol der siebte Datentyp von js, der einen eindeutigen Wert darstellt. Ist ein Datentyp, der einem String ähnelt.

Der Zweck besteht darin, Attributnamenkonflikte zu verhindern und sicherzustellen, dass jeder Attributname im Objekt eindeutig ist.

lass s1 = Symbol('foo');
lass s2 = Symbol('foo');

s1 === s2 // falsch

Der Symboltyp kann einen Zeichenfolgenparameter haben, der die Beschreibung der Symbolinstanz darstellt. Daher sind zwei Symboltypinstanzen mit derselben Beschreibung nicht gleich.

Der Grund, warum das Symbol erscheint

Die Objekteigenschaftsnamen von ES5 sind alle Zeichenfolgen, was leicht zu Konflikten bei den Eigenschaftsnamen führen kann. Wenn Sie beispielsweise ein von jemand anderem bereitgestelltes Objekt verwenden, diesem Objekt aber eine neue Methode hinzufügen möchten (Mix-In-Modus), kann der Name der neuen Methode möglicherweise mit der vorhandenen Methode in Konflikt geraten. Es wäre schön, wenn es einen Mechanismus gäbe, der sicherstellt, dass jeder Attributname eindeutig ist, sodass Namenskonflikte vermieden werden. Aus diesem Grund führte ES6 Symbol ein

Symbolfunktionen

  • Symbolwerte sind eindeutig und werden zum Lösen von Namenskonflikten verwendet.
  • Slymbol-Werte können nicht mit anderen Daten operiert werden
  • Die durch Symbol definierten Objekteigenschaften können nicht mit der fr..in-Schleife durchlaufen werden, aber Reflect.ownKeys kann verwendet werden, um alle Schlüsselnamen des Objekts abzurufen
  • Der neue Befehl kann nicht vor der Symbolfunktion verwendet werden, da sonst ein Fehler gemeldet wird. Dies liegt daran, dass das generierte Symbol ein primitiver Wert und kein Objekt ist. Das heißt, da ein Symbolwert kein Objekt ist, können Sie ihm keine Eigenschaften hinzufügen. Grundsätzlich handelt es sich dabei um einen Datentyp ähnlich einem String.
//Symbol erstellen
lass s = Symbol();
console.log(s, Typ von s);


// Versuchen Sie, 2 Symbole mit demselben Namen zu erstellen. let s2 = Symbol(' 辣鸡rb');
let s3 = Symbol(' s3 rb ');
console.log(s2 === s3); //falsch


//Verwenden Sie Symbol.for, um dasselbe Symbol zu erstellen
let s4 = Symbol.for('würziges Hühnchen rb');
let s5 = Symbol.for('würziges Hühnchen rb');
console.log(s4 === s5); //wahr


//Operationen mit anderen Daten können nicht durchgeführt werden let result = s + 100; //Fehler,

Lassen Sie uns am Ende des Artikels die Datentypen von js überprüfen

Eine Eselsbrücke aus dem Silicon Valley

// USONB =>du bist so .niubility Du bist so großartig // u=>undefined

// s=>String-Symbol

// 0=>Objekt

// n=>Nullzahl

// b=>Boolesch

Nachdem ich darüber nachgedacht hatte, beschloss ich, mehr zu schreiben.

Anwendung von Symbolen

Fügen Sie dem rb-Objekt Up- und Down-Methoden hinzu

Methode 1

sei rb = {
    Name: „Japanische Kriegsverbrecher“,
    Alter: 500,
};
// Verarbeitung mit Symbol // Deklariere ein Objekt, welches zwei Methoden enthält. Die Methoden werden mit symbol() geschrieben let methods = {
    nach oben: Symbol(),
    nach unten: Symbol()
};
// Füge die Methode rb[methods.up] = function () { hinzu
    console.log('Verzeihen Sie mir, dass ich über Leute rede');
};
rb[Methoden.down] = Funktion () {
    console.log('Dieses Biest kennt keine Scham und bittet das chinesische Volk, ihm zu vergeben');
};
konsole.log(rb);

Methode 2

Fügen Sie dem rb-Objekt die Methoden sb und dsb hinzu

sei rb = {
    Name: „Japanische Kriegsverbrecher“,
    Alter: 500,
    [Symbol('sb')]: Funktion () {
        console.log('Ich mag japanische Animation');
    },
     [Symbol('dsb')]: Funktion () {
         console.log('Aber es hält mich nicht davon ab, die Verbrechen zu hassen, die sie in China begangen haben');
     },
};

konsole.log(rb);

Integrierte Symbol-Eigenschaftswerte

  • Symbol.hasInstance: Wenn andere Objekte den Operator „instanceof“ verwenden, verwenden sie die interne Methode, auf die der Eigenschaftsname verweist.
  • Symbol.isConcatSpreadable
  • Symbol.Art
  • Symbol.match
  • Symbol.ersetzen
  • Symbol.suche
  • Symbol.split
  • Symbol.iterator
  • Symbol.toPrimitive
  • Symbol.toStringTag
  • Symbol.unscopables

Zusammenfassen

Dies ist das Ende dieses Artikels über den Symboldatentyp in ES6. Weitere Informationen zum Symboldatentyp in ES6 finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Zwecks des ES6-Symbols
  • ES6-Konzeptsymbol toString()-Methode
  • Detaillierte Erläuterung der Anwendungsbeispiele von Symboltypen in ES6
  • Detaillierte Erklärung zur Verwendung des Datentyps Symbol in Javascript ES6
  • ES6-Konzept Symbol.keyFor()-Methode
  • Analyse der Verwendung des Symboltyps in den neuen Funktionen von ES6
  • Beispiel für die Implementierung des ES6-Symbols
  • Detaillierte Erklärung der Symbol-, Set- und Map-Verwendung in ES6
  • ES5 simuliert das Symbol von ES6, um ein Beispiel für eine private Memberfunktion zu implementieren
  • Anwendungsbeispielanalyse des ES6-Symboldatentyps

<<:  Beispielanalyse von gespeicherten MySQL-Prozeduren, die Fehlerbedingungen in gespeicherten Prozeduren auslösen (SIGNAL- und RESIGNAL-Anweisungen)

>>:  Docker legt Port 2375 frei, was zu Serverangriffen und -lösungen führt

Artikel empfehlen

Verwendung des Linux-Lesebefehls

1. Befehlseinführung Der Lesebefehl ist ein integ...

Natives JS zur Implementierung einer Echtzeituhr

Teilen Sie einen Echtzeituhreffekt, der mit nativ...

Beispiel für den schnellen Aufbau eines Redis-Clusters mit Docker

Was ist Redis Cluster? Redis Cluster ist eine von...

Code zum Anzeigen des Inhalts eines TXT-Buchs auf einer Webseite

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

Analyse des Parameterübertragungsprozesses des Treibermoduls in Linux

Deklarieren Sie den Parameternamen, den Typ und d...

Reines CSS zum Ändern der Farbe des Bildes

Die CSS-Technik zum Ändern der Farbe eines Bildes...

Implementierung der MySQL-Datentypkonvertierung

1. Problem Es gibt eine Tabelle wie unten gezeigt...

Tutorial zur Änderung des Root-Passworts in MySQL 5.6

1. Nach der Installation von MySQL 5.6 kann es ni...

Was ist eine HTML-Datei? So öffnen Sie eine HTML-Datei

HTML steht für Hypertext Markup Language. Heutzut...