¿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.
classCourse{constructor(name){this._name= name;// uso de prefijo para denotar privacidad}getname(){returnthis._name;// acceso controlado a la propiedad}setname(newName){if(!newName.includes("malito")){this._name= newName;}else{console.warn("Way, no puedes actualizar el curso con ese nombre.");}}}let curso =newCourse("Curso gratis de programación básica");console.log(curso.name);// Accede al nombre utilizando el gettercurso.name="Curso avanzado de programación";// Modifica el nombre usando el setterconsole.log(curso.name);// Verifica el cambio
¿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.