Quizás alguien te haya contado que ciertas cosas no se pueden hacer en Javascript, por ejemplo tener atributos privados. Pero gracias a las closures, podemos crear atributos privados en Javascript.
Veamos un ejemplo simple, donde creamos un objeto Persona con dos atributos, nombre (público) y edad (privado):
Si utilizamos el objeto:
Parece que efectivamente, edad_ ha guardado su valor, pero ¿podremos acceder al atributo?
Como buen atributo privado, solo podemos acceder a él desde dentro del propio objeto y no desde fuera. Para poder modificar nuestro atributo edad_, usaremos el método setEdad();
Y de la misma manera podremos crear métodos privados. Si quisiésemos tener atributos de tipo “Private” y “Protected”, tendríamos que entrar en más detalle, pero como idea inicial creo que es un buen ejemplo.
Si no terminas de ver claro el código, échale un ojo a este artículo de la MDN sobre las Closures