Heim  >  Artikel  >  Web-Frontend  >  Symboldatentyp in Javascript

Symboldatentyp in Javascript

DDD
DDDOriginal
2023-09-20 11:34:32891Durchsuche

Der Symboldatentyp in JavaScript ist ein grundlegender Datentyp, der zur Darstellung eindeutiger Werte verwendet wird. Eigenschaften des Symbols: 1. Einzigartig, jeder Symbolwert ist einzigartig und nicht mit einem anderen Wert identisch. 2. Unveränderlichkeit, sobald der Symbolwert erstellt wurde, kann er nicht geändert oder neu zugewiesen werden. 3. Verstecktheit, der Symbolwert kann nicht sein geändert oder neu zugewiesen; Es wird implizit in andere Typen konvertiert. 4. Es kann nicht aufgelistet werden. Wenn der Symbolwert als Attributname des Objekts verwendet wird, ist er standardmäßig nicht aufzählbar.

Symboldatentyp in Javascript

Der Symbol-Datentyp in JavaScript ist eine neue Funktion, die von ES6 eingeführt wurde. Es handelt sich um einen grundlegenden Datentyp, der zur Darstellung eindeutiger Werte verwendet wird. Symbolwerte können als Attributnamen von Objekten verwendet werden, um das Problem von Attributnamenkonflikten zu lösen. In diesem Artikel werden die Eigenschaften, die Verwendung und einige gängige Anwendungsszenarien des Symboldatentyps ausführlich vorgestellt.

1. Eigenschaften des Symbols

1. Jeder Symbolwert ist einzigartig und entspricht keinem anderen Wert, auch wenn die Beschreibung des Symbolwerts dieselbe ist. Dies bedeutet, dass Sie den Symbolwert als Attributnamen des Objekts verwenden können, um die Eindeutigkeit des Attributnamens sicherzustellen und Konflikte mit Attributnamen zu vermeiden.

2. Unveränderlichkeit: Sobald ein Symbolwert erstellt wurde, kann er nicht geändert oder neu zugewiesen werden. Dies unterscheidet sich von Datentypen wie Zeichenfolgen und Zahlen, deren Wert durch Neuzuweisung geändert werden kann, während Symbolwerte unveränderlich sind.

3. Verborgenheit: Symbolwerte werden nicht implizit in andere Typen konvertiert. Das Hinzufügen eines Symbolwerts zu einer Zeichenfolge führt beispielsweise nicht zum erwarteten Ergebnis, sondern löst einen TypeError aus. Durch dieses Ausblenden werden unerwartete Probleme bei der Typkonvertierung vermieden.

4. Nicht aufzählbar: Wenn der Symbolwert als Attributname des Objekts verwendet wird, ist er standardmäßig nicht aufzählbar. Dies bedeutet, dass der Symbol-Eigenschaftsname nicht mit der for...in-Schleife oder der Object.keys()-Methode abgerufen werden kann. Diese Funktion kann verwendet werden, um bestimmte Attribute vor dem Durchlaufen zu verbergen.

2. Verwendung des Symbols

1. Sie können die Funktion Symbol() verwenden, um einen Symbolwert zu erstellen.

let sym = Symbol();
console.log(typeof sym); // "symbol"
let symWithDesc = Symbol("description");
console.log(symWithDesc.toString()); // "Symbol(description)"

2. Symbol als Attributnamen verwenden: Sie können den Symbolwert als Attributnamen des Objekts verwenden, um die Eindeutigkeit des Attributnamens sicherzustellen.

let obj = {
  [Symbol("key")]: "value"
};
console.log(obj[Symbol("key")]); // undefined,每次使用Symbol()函数创建的Symbol值都是不相等的
let sym = Symbol("key");
obj[sym] = "new value";
console.log(obj[sym]); // "new value"

3. Abrufen der Symbol-Eigenschaftsnamen: Sie können die Methode Object.getOwnPropertySymbols() verwenden, um alle Symbol-Eigenschaftsnamen des Objekts abzurufen.

let obj = {
  [Symbol("key1")]: "value1",
  [Symbol("key2")]: "value2"
};
let symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols); // [Symbol(key1), Symbol(key2)]
console.log(obj[symbols[0]]); // "value1"

4. Integrierte Eigenschaften von Symbolen: Symbolwerte verfügen über einige integrierte Eigenschaften, mit denen das Standardverhalten von Objekten geändert werden kann.

- Symbol.iterator: Wird zum Definieren der Standard-Iteratormethode von Objekten verwendet.

- Symbol.toStringTag: Wird zum Ändern des String-Tags verwendet, das von der Standardmethode toString() des Objekts zurückgegeben wird.

- Symbol.hasInstance: wird verwendet, um das Standardverhalten des Instanzoperators für Objekte zu definieren.

- Symbol.toPrimitive: wird verwendet, um das Standardverhalten von Objekten zu definieren, die in primitive Werte konvertiert werden.

let obj = {
  [Symbol.iterator]: function* () {
    yield 1;
    yield 2;
  },
  [Symbol.toStringTag]: "MyObject"
};
console.log([...obj]); // [1, 2]
console.log(obj.toString()); // "[object MyObject]"

3. Anwendungsszenarien von Symbol

1. Durch die Verwendung des Symbolwerts als Attributnamen des Objekts können Attributnamenkonflikte zwischen verschiedenen Modulen oder Bibliotheken vermieden werden.

2. Konstanten definieren: Sie können Symbolwerte verwenden, um Konstanten zu definieren, um die Eindeutigkeit der Konstanten sicherzustellen.

const RED = Symbol("red");
const BLUE = Symbol("blue");

3. Versteckte Attribute: Durch die Verwendung des Symbolwerts als Attributname des Objekts können bestimmte Attribute ausgeblendet werden, um zu verhindern, dass sie durchlaufen werden.

let obj = {
  [Symbol("hidden")]: "value",
  visible: "value"
};
for (let key in obj) {
  console.log(key); // "visible",Symbol属性名不可枚举
}

4. Integrierte Objekte erweitern: Sie können Symbolwerte verwenden, um die Funktionalität integrierter Objekte zu erweitern und ihnen benutzerdefinierte Methoden oder Eigenschaften hinzuzufügen.

Array.prototype[Symbol.iterator] = function* () {
  for (let i = 0; i < this.length; i++) {
    yield this[i];
  }
};
let arr = [1, 2, 3];
console.log([...arr]); // [1, 2, 3]

Zusammenfassend lässt sich sagen, dass der Datentyp „Symbol“ ein grundlegender Datentyp in JavaScript ist, der zur Darstellung eindeutiger Werte verwendet wird. Es zeichnet sich dadurch aus, dass es einzigartig, unveränderlich, verborgen und nicht aufzählbar ist und in Szenarien wie dem Lösen von Eigenschaftsnamenkonflikten, dem Definieren von Konstanten, dem Ausblenden von Eigenschaften und dem Erweitern integrierter Objekte verwendet werden kann. Die Erstellung und Verwendung von Symbolwerten ist relativ einfach, Sie müssen jedoch auf ihre Besonderheit und Verstecktheit achten, um unerwartete Probleme zu vermeiden.

Das obige ist der detaillierte Inhalt vonSymboldatentyp in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn