Cómo utilizar el patrón del módulo revelador en JavaScript
Me topé con esta publicación: Patrón de módulo revelador de JavaScript . Me gustaría usar esto en mi proyecto.
Imaginemos que tengo una función abc
y la llamo en mi archivo JavaScript principal.
¿Este patrón hace que las cosas sean diferentes? ¿Alguien puede mostrarme un ejemplo básico de este patrón?
Un pequeño ejemplo:
var revealed = function(){
var a = [1,2,3];
function abc(){
return (a[0]*a[1])+a[2];
}
return {
name: 'revealed',
abcfn: abc
}
}();
en la función anónima que se inicia para dar revealed
un valor a
y abc
son privados para esa función. Lo que devuelve la función es un objeto literal con una name
propiedad y una abcfn
propiedad, que es una referencia al archivo abc function
. Utiliza abc function
la variable privada a
. Todo esto se puede hacer gracias al uso de cierres (todo lo que esté dentro del alcance de una función puede ser referenciado por todo lo demás en esa misma función).
Uso revelado:
alert(revealed.name); //=> 'revealed'
alert(revealed.abcfn()); //=> 5 (1*2+3)
DC = Douglas Crockford
RMP = Patrón de módulo revelador
La diferencia entre DC y RMP es principalmente organizativa/legible
¿Se presenta un ejemplo en el propio artículo? ¿Y qué preguntas exactamente? Porque esas cosas no tienen nada que ver con archivos sino con cierres.
Pones todo en un cierre (función) y expones solo aquellas partes a las que deseas que sean accesibles. La diferencia entre el estilo DC y RMP es que en el primero las funciones se definen en diferentes lugares mientras que en el RMP siempre se definen en el mismo lugar y luego se revelan en el literal de objeto público .
Entonces en DC y RMP tienes:
- cierre que permite definir partes privadas (variables y funciones)
- parte privada
- resultado público que define la funcionalidad y las variables visibles públicamente (estado)
Estos dos patrones difieren sólo en la legibilidad. En el caso de DC no siempre se puede saber dónde se definirá cierta funcionalidad, pero en el RMP siempre se sabe que todo está en la parte privada.
El patrón del módulo revelador se describe bastante bien en el artículo Patrones de diseño de JavaScript esenciales para principiantes .
El método llamado por el autor "patrón de Douglas Crockford para crear objetos" es en realidad el patrón de módulo desarrollado principalmente por Richard Cornford et al . Consulte http://groups.google.com/group/comp.lang.javascript/msg/9f58bd11bd67d937
En cuanto a ejemplos, hay muchos. Lea el siguiente artículo y siga algunos de los enlaces: http://peter.michaux.ca/articles/module-pattern-provides-no-privacy-at-least-not-in-javascript-tm