typestar

Getters y setters en JavaScript

Propiedades calculadas que parecen campos simples.

class Run {
  #tpm = 0;

  get tpm() {
    return this.#tpm;
  }

  set tpm(value) {
    if (value < 0) throw new RangeError("tpm cannot be negative");
    this.#tpm = value;
  }

  get stars() {
    return this.#tpm >= 100 ? 3 : 1;
  }
}

const run = new Run();
run.tpm = 104;
console.log(run.tpm, run.stars);

try {
  run.tpm = -1;
} catch (error) {
  console.log(error.name);
}

const frozen = {};
Object.defineProperty(frozen, "id", { get: () => "fixed", enumerable: true });
console.log(frozen.id, Object.keys(frozen));

Cómo funciona

  1. Un getter corre al leer; un setter valida al escribir.
  2. defineProperty los define sobre un objeto existente.
  3. Mantenlos baratos: quien llama espera un campo, no una consulta.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
30
Caracteres a escribir
490
Tokens
158
Ritmo de tres estrellas
110 tpm

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

Escribe este fragmento

Paso 3 de 4 en Objetos por dentro; paso 14 de 16 en Funciones y patrones.

← Anterior Siguiente →