Clases, la parte moderna en JavaScript
Declaración de campos, miembros privados, bloques static y accesores.
class Session {
#runs = [];
static created = 0;
static {
Session.created = 0;
}
constructor(lang) {
this.lang = lang;
Session.created += 1;
}
record(tpm) {
this.#runs.push(tpm);
return this;
}
get best() {
return this.#runs.length ? Math.max(...this.#runs) : 0;
}
static from(lang, ...runs) {
const session = new Session(lang);
runs.forEach((tpm) => session.record(tpm));
return session;
}
}
const session = Session.from("go", 98, 104);
console.log(session.best, Session.created, Object.keys(session));
Cómo funciona
- Un campo
#namees privado de verdad: ninguna reflexión lo alcanza. - Los campos de clase reemplazan asignar en el constructor.
- Los miembros y bloques
staticpertenecen a la clase misma.
Palabras clave y builtins usados aquí
MathObjectclassconstconstructorfromreturnstaticthis
El intento, en números
- Líneas
- 31
- Caracteres a escribir
- 508
- Tokens
- 156
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 99 segundos.
Paso 2 de 3 en Clases; paso 36 de 43 en Fundamentos del lenguaje.