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
- Un getter corre al leer; un setter valida al escribir.
definePropertylos define sobre un objeto existente.- Mantenlos baratos: quien llama espera un campo, no una consulta.
Palabras clave y builtins usados aquí
Objectcatchclassconstifreturnthisthrowtry
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.
Paso 3 de 4 en Objetos por dentro; paso 14 de 16 en Funciones y patrones.