2016-04-22 4 views
4

Der neue Urtyp mit ES6 kommt das Symbol type.The kurze Definition sagt:Was sind die „Symbol“ primitiven Datentypen in JavaScript

Ein Symbol ist ein einzigartiger und unveränderlicher Datentyp ist und als eine verwendet werden Bezeichner für Objekteigenschaften. Das Symbolobjekt ist ein impliziter Objektwrapper für den Symbolprimitivdatentyp.

Ich habe einige Recherchen gemacht, aber ich kann nicht verstehen, warum wir diesen primitiven Typ genau brauchen?

Vielen Dank für Ihre Antworten.

+1

mehr (besser) Duplikate: [Was ist der Sinn des Typs ‚Symbol‘ in ECMA -262-v6?] (Http://Stackoverflow.com/q/30919170/1048572), [Warum bringen Sie Symbole zu Javascript?] (Http://stackoverflow.com/q/21724326/1048572) – Bergi

Antwort

8

Dieser primitive Typ ist nützlich für so genannte "private" und/oder "eindeutige" Schlüssel.

Mit einem Symbol wissen Sie, niemand sonst, der nicht teilt diese Instanz (anstelle der Zeichenfolge) wird nicht in der Lage sein, eine bestimmte Eigenschaft auf einer Karte festzulegen.

Beispiel ohne Symbole:

var map = {}; 
setProp(map); 
setProp2(map); 

function setProp(map) { 
    map.prop = "hey"; 
} 
function setProp2(map) { 
    map.prop = "hey, version 2"; 
} 

In diesem Fall wird der Anruf zweite Funktion wird der Wert in der ersten außer Kraft setzen.

jedoch mit Symbolen, anstatt nur mit „die Zeichenfolge prop“, verwenden wir die Instanz selbst:

var map = {}; 
var symbol1 = Symbol("prop"); 
var symbol2 = Symbol("prop"); // same name, different instance – so it's a different symbol! 
map[symbol1] = 1; 
map[symbol2] = 2; // doesn't override the previous symbol's value 
console.log(map[symbol1] + map[symbol2]); // logs 3 
+0

Nein, es gibt nichts privat über Symbole überhaupt. Sie * sind * nützlich für die Einzigartigkeit. –

Verwandte Themen