Con la introducción de ES6, JavaScript ahora ofrece la posibilidad de declarar campos privados en clases. Esto es especialmente importante para el encapsulamiento de datos y para prevenir el acceso no deseado desde el exterior. En este tutorial aprenderás cómo implementar y utilizar campos privados de manera efectiva para mantener tus datos a salvo.
Principales conclusiones
- Los campos privados se declaran con el signo de almohadilla (#).
- El acceso a los campos privados solo se realiza dentro de la clase.
- JavaScript no ofrece visibilidad basada en palabras clave como otros lenguajes de programación.
Guía paso a paso
Declarar clase y crear miembros privados
Primero, creamos una clase y declaramos un campo privado. Comenzamos con una clase que se llama Secret y contiene un campo privado llamado #secret. Este campo almacena información confidencial que no debería estar disponible para accesos externos.

Crear instancia de la clase y llamar a un método
A continuación, creamos una instancia de la clase Secret y llamamos al método print() para mostrar el valor del campo privado. Debería verse de la siguiente manera:
Intentar acceso externo a campos privados
Lo interesante ocurre cuando intentas acceder directamente al campo privado #secret desde el exterior. Te darás cuenta de que esto no funciona. El compilador de JavaScript ya te advertirá mientras escribes el código.
Si ingresas mySecret.#secret, recibirás un mensaje de error en Visual Studio Code. Esto muestra que los campos privados realmente cumplen su propósito: no son accesibles desde fuera de la clase.
Verificando la visibilidad con Object Keys
Un buen procedimiento de prueba es verificar si el campo privado se muestra al usar Object.keys(). Si intentas listar las claves de la instancia, deberías ver que #secret no está listado.
Ves que el campo privado no se lista. Así se manifiesta la ventaja del encapsulamiento de datos en JavaScript.
Diferencia con convenciones anteriores
Antes existían convenciones que indicaban campos privados con el uso de dobles guiones bajos. Sin embargo, este método realmente no funciona, ya que no hay protección contra el acceso a propiedades privadas. Con la introducción de campos privados con el símbolo de almohadilla, ahora tienes un método limpio y eficaz para declarar variables privadas.
Crear campos privados estáticos
También puedes declarar campos privados estáticos en tu clase. Esto funciona de manera similar a las variables de instancia, pero requiere un enfoque ligeramente diferente para la inicialización.
console.log(Secret.getPrivateStaticField()); // Salida: "Soy privado"
Es importante tener en cuenta que debes realizar el acceso estático con la sintaxis del nombre de la clase.
Conclusión
Con el uso de campos privados en clases de JavaScript, puedes asegurarte de que datos importantes solo sean manipulados internamente dentro de la clase. Esta es una gran ventaja para el encapsulamiento y la seguridad de tus estructuras de datos. Ahora has aprendido cómo implementar campos privados, acceder a ellos desde el exterior y asegurar efectivamente el encapsulamiento de datos.
Resumen – Uso efectivo de campos privados en clases de JavaScript
En esta guía, has aprendido el proceso de implementación y uso de campos privados en clases de JavaScript. Ahora sabes que la declaración de campos privados se realiza con el signo de almohadilla (#) y que el acceso desde el exterior no es posible.
Preguntas frecuentes
¿Qué son los campos privados en JavaScript?Los campos privados son propiedades de una clase que no son accesibles desde el exterior y solo pueden ser modificadas dentro de la clase.
¿Cómo declaro un campo privado?Un campo privado se declara anteponiendo el signo de almohadilla (#) al nombre, por ejemplo, #miCampoPrivado.
¿Puedo declarar campos privados estáticos?Sí, también puedes declarar campos privados estáticos utilizando la sintaxis static #nombreDelCampo.
¿Por qué son importantes los campos privados?Los campos privados protegen tus datos de accesos no autorizados desde el exterior y fomentan el encapsulamiento en la programación orientada a objetos.
¿Cómo funciona el acceso a campos privados?Solo se puede acceder a campos privados dentro de la clase. Un script externo o algún otro código no puede acceder directamente a ellos.