¿Cómo se encapsulan métodos y atributos en JavaScript?
JavaScript es un lenguaje con particularidades únicas que se manifiestan en diversas formas a la hora de trabajar con prototipos y clases. Aunque el encapsulamiento es un concepto familiar en muchos lenguajes, en JavaScript la forma de implementarlo difiere un poco. Aquí analizaremos cómo podemos proteger nuestros datos y métodos de cambios no deseados.
¿Cómo protegemos los atributos en JavaScript?
En lenguajes de programación tradicionales, es común marcar atributos como privado
o público
para controlar el acceso. Sin embargo, JavaScript no tiene un soporte nativo para el acceso privado. En su lugar, se sigue una convención: prefixar el nombre del atributo con un guion bajo (_
). Este método pretende ser una señal amistosa a otros desarrolladores para que entiendan que esos atributos no deberían ser manipulados directamente desde fuera de la clase.
¿Qué son los getters y setters?
Getters y setters son métodos especiales que nos permiten interceptar y controlar el acceso a los propiedades de los objetos:
- Getters: Permiten acceder a los valores de propiedades encapsuladas.
- Setters: Facilitan la modificación de dichos valores, permitiendo agregar lógica adicional, como validaciones, antes de realizar cambios.
class Course {
constructor(name) {
this._name = name;
}
get name() {
return this._name;
}
set name(newName) {
if (!newName.includes("malito")) {
this._name = newName;
} else {
console.warn("Way, no puedes actualizar el curso con ese nombre.");
}
}
}
let curso = new Course("Curso gratis de programación básica");
console.log(curso.name);
curso.name = "Curso avanzado de programación";
console.log(curso.name);
¿Cómo se previenen cambios indeseados?
Utilizando setters, podemos establecer restricciones o validaciones que deben cumplirse antes de modificar propiedades. En el caso ilustrado, se previene que el nombre del curso pueda incluir valores considerados inapropiados como "malito".
Desafíos y ejercicios
Practicar con getters y setters es esencial para dominar su uso en JavaScript. Aquí te propongo dos desafíos:
- Describe cómo se utilizan getters y setters sin la sintaxis de clases: Comprende cómo trabajar con ellos en prototipos tradicionales de JavaScript.
- Aplica getters y setters en un proyecto propio: Actualiza atributos dentro de un sistema más complejo (como un clon de una aplicación educativa) para gestionar estudiantes y cursos.
Estos pasos no solo consolidarán tu conocimiento sobre encapsulamiento en JavaScript, sino que también te prepararán para escribir código más robusto y sostenible. ¡Adelante, sigue explorando! Tu habilidad para gestionar la lógica de negocio con JavaScript crecerá exponencialmente con la práctica.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?