typestar

Símbolos en JavaScript

Claves únicas que nunca chocan, y los símbolos bien conocidos con significado.

const INTERNAL = Symbol("internal");

const tour = { slug: "patterns", [INTERNAL]: { cached: true } };
console.log(Object.keys(tour), JSON.stringify(tour));
console.log(tour[INTERNAL].cached, Object.getOwnPropertySymbols(tour).length);

console.log(Symbol("a") === Symbol("a"), Symbol.for("a") === Symbol.for("a"));

class Range {
  constructor(to) { this.to = to; }
  *[Symbol.iterator]() { for (let i = 1; i <= this.to; i += 1) yield i; }
  get [Symbol.toStringTag]() { return "Range"; }
  [Symbol.toPrimitive](hint) { return hint === "number" ? this.to : "range"; }
}

const range = new Range(3);
console.log([...range], `${range}`, +range, Object.prototype.toString
  .call(range));

Cómo funciona

  1. Symbol("x") es único; la descripción es solo una etiqueta.
  2. Una clave símbolo la saltan JSON y Object.keys.
  3. Los símbolos bien conocidos se enganchan al comportamiento del lenguaje.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
676
Tokens
215
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 117 segundos.

Escribe este fragmento

Paso 2 de 4 en Objetos por dentro; paso 13 de 16 en Funciones y patrones.

← Anterior Siguiente →