Zoeken…


Syntaxis

  • Symbool()
  • Symbool (beschrijving)
  • Symbol.toString ()

Opmerkingen

ECMAScript 2015 Specificatie 19.4 Symbolen

Basisprincipes van het symbool primitieve type

Symbol is een nieuw primitief type in ES6. Symbolen worden voornamelijk gebruikt als eigenschapssleutels en een van de belangrijkste kenmerken is dat ze uniek zijn , zelfs als ze dezelfde beschrijving hebben. Dit betekent dat ze nooit een naamconflict hebben met een andere eigenschapssleutel die een symbol of string .

const MY_PROP_KEY = Symbol();
const obj = {};

obj[MY_PROP_KEY] = "ABC";
console.log(obj[MY_PROP_KEY]); 

In dit voorbeeld zou het resultaat van console.log ABC .

U kunt ook symbolen hebben genoemd zoals:

const APPLE    = Symbol('Apple');
const BANANA   = Symbol('Banana');
const GRAPE    = Symbol('Grape');

Elk van deze waarden is uniek en kan niet worden opgeheven.

Het verstrekken van een optionele parameter (description) bij het maken van primitieve symbolen kan worden gebruikt voor foutopsporing maar niet voor toegang tot het symbool zelf (maar zie het voorbeeld Symbol.for() voor een manier om globale gedeelde symbolen te registreren / op te zoeken).

Een symbool omzetten in een string

In tegenstelling tot de meeste andere JavaScript-objecten, worden symbolen niet automatisch geconverteerd naar een tekenreeks bij het uitvoeren van aaneenschakeling.

let apple = Symbol('Apple') + ''; // throws TypeError!

In plaats daarvan moeten ze indien nodig expliciet worden omgezet in een tekenreeks (bijvoorbeeld om een tekstuele beschrijving te krijgen van het symbool dat in een foutopsporingsbericht kan worden gebruikt) met behulp van de methode toString of de constructor String .

const APPLE = Symbol('Apple');
let str1 = APPLE.toString(); // "Symbol(Apple)"
let str2 = String(APPLE);    // "Symbol(Apple)"

Symbol.for () gebruiken om globale, gedeelde symbolen te maken

Met de methode Symbol.for kunt u globale symbolen op naam registreren en opzoeken. De eerste keer dat het wordt aangeroepen met een gegeven sleutel, maakt het een nieuw symbool en voegt het toe aan het register.

let a = Symbol.for('A');

De volgende keer dat u Symbol.for('A') , wordt hetzelfde symbool geretourneerd in plaats van een nieuw (in tegenstelling tot Symbol('A') dat een nieuw, uniek symbool zou creëren dat toevallig dezelfde beschrijving heeft ).

a === Symbol.for('A') // true

maar

a === Symbol('A') // false


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow