Campos de clase públicos y privados
Varias propuestas amplían la sintaxis existente de clases en JavaScript con nuevas funcionalidades. Este artículo explica la nueva sintaxis de campos de clase públicos en V8 v7.2 y Chrome 72, así como la próxima sintaxis de campos de clase privados.
Aquí hay un ejemplo de código que crea una instancia de una clase llamada IncreasingCounter
:
const counter = new IncreasingCounter();
counter.value;
// registros '¡Obteniendo el valor actual!'
// → 0
counter.increment();
counter.value;
// registros '¡Obteniendo el valor actual!'
// → 1
Nota que acceder a value
ejecuta algún código (es decir, registra un mensaje) antes de devolver el resultado. Ahora pregúntate, ¿cómo implementarías esta clase en JavaScript? 🤔
Sintaxis de clases de ES2015
Aquí se muestra cómo IncreasingCounter
podría implementarse utilizando la sintaxis de clases de ES2015:
class IncreasingCounter {
constructor() {
this._count = 0;
}
get value() {
console.log('¡Obteniendo el valor actual!');
return this._count;
}
increment() {
this._count++;
}
}
La clase instala el getter value
y un método increment
en el prototipo. Más interesante aún, la clase tiene un constructor que crea una propiedad de instancia _count
y establece su valor predeterminado en 0
. Actualmente, tendemos a usar el prefijo de guion bajo para denotar que _count
no debería ser utilizado directamente por los consumidores de la clase, pero eso es solo una convención; no es realmente una propiedad "privada" con semántica especial aplicada por el lenguaje.