Sök…


Syntax

  • Symbol()
  • Symbolen (beskrivning)
  • Symbol.toString ()

Anmärkningar

ECMAScript 2015-specifikation 19.4 Symboler

Grunderna i primitiv symbol

Symbol är en ny primitiv typ i ES6. Symboler används huvudsakligen som egenskapsknappar , och en av dess huvudsakliga egenskaper är att de är unika , även om de har samma beskrivning. Det betyder att de aldrig kommer att ha ett namnkollision med någon annan egendomsknapp som är en symbol eller string .

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

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

I det här exemplet skulle resultatet av console.log vara ABC .

Du kan också ha namngivna symboler som:

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

Var och en av dessa värden är unika och kan inte åsidosättas.

Att tillhandahålla en valfri parameter (description) när du skapar primitiva symboler kan användas för felsökning men inte för att få åtkomst till själva symbolen (men se Symbol.for() exempel för ett sätt att registrera / leta upp globala delade symboler).

Konvertera en symbol till en sträng

Till skillnad från de flesta andra JavaScript-objekt konverteras inte symboler automatiskt till en sträng när du utför sammankoppling.

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

Istället måste de uttryckligen omvandlas till en sträng vid behov (till exempel för att få en textbeskrivning av den symbol som kan användas i en debug-meddelande) med toString metoden eller String konstruktören.

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

Använd Symbol.for () för att skapa globala, delade symboler

Metoden Symbol.for låter dig registrera och slå upp globala symboler efter namn. Första gången den kallas med en given nyckel skapar den en ny symbol och lägger till den i registret.

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

Nästa gång du ringer Symbol.for('A') kommer samma symbol att returneras istället för en ny (i motsats till Symbol('A') som skulle skapa en ny, unik symbol som råkar ha samma beskrivning ).

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

men

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow