Encapsular funciones en JavaScript significa limitar su alcance, protegiendo su comportamiento y datos para que no sean directamente accesibles desde el exterior. Esto es útil para evitar conflictos de nombres, mejorar la modularidad y mantener el código limpio.
1. Usando Funciones Anónimas Autoejecutables (IIFE)
Un patrón común para encapsulación es envolver el código en una IIFE (Immediately Invoked Function Expression). Esto crea un ámbito cerrado.
2. Usando Objetos Literales
Se pueden encapsular funciones dentro de un objeto para agruparlas como métodos.
3. Aprovechando Closures
Los closures te permiten encapsular variables y funciones, haciendo que solo sean accesibles a través de métodos internos.
4. Clases (ES6)
Las clases permiten encapsular métodos y datos dentro de instancias. Puedes
usar campos privados con la convención de prefijo _
o con
#
.
5. Módulos de JavaScript (ES6)
Si usas el sistema de módulos con export
e
import
, puedes exportar solo las partes públicas y encapsular
el resto.
El uso de funciones encapsuladas en JavaScript depende de cómo se hayan implementado y el objetivo del proyecto. Te explico todo en detalle:
¿Cómo se declaran y usan las funciones encapsuladas?
1- Declaración: Las funciones encapsuladas se declaran dentro de un ámbito restringido, como una función envolvente, un objeto, un closure o una clase. Aquí tienes ejemplos:Dentro de una IIFE (Immediately Invoked Function Expression):
Dentro de un Objeto:
Dentro de un Closure:
2- Dónde se usan: Las funciones encapsuladas se utilizan dentro del ámbito donde se declaran. Puedes llamarlas desde otros métodos del mismo objeto o clase, pero no directamente desde fuera.
Relación con HTML y CSS
Las funciones encapsuladas tienen un rol importante en la interacción con HTML y CSS porque permiten modularizar el comportamiento dinámico que afecta a la estructura y el estilo de las páginas web.
HTML: Las funciones encapsuladas pueden interactuar con elementos HTML utilizando JavaScript. Por ejemplo, puedes realizar cambios en el DOM desde dentro de una función encapsulada:
HTML vinculado:
CSS: Las funciones encapsuladas pueden modificar estilos
dinámicamente usando la propiedad style
del DOM o inyectando
reglas CSS directamente:
HTML vinculado:
Dónde implementar estas funciones
Estas funciones suelen implementarse en archivos .js
y se
vinculan al HTML mediante un <script>
o módulos ES6. Aquí
tienes un ejemplo de estructura completa:
HTML:
CSS:
JavaScript (script.js):
Resumen
- Declaración: Dentro de IIFE, objetos, closures o clases.
- Uso: Dentro del ámbito definido, las funciones encapsuladas pueden interactuar con elementos HTML y modificar estilos CSS dinámicamente.
- Vinculación: Las funciones encapsuladas se conectan al HTML/CSS a través de eventos y manipulaciones del DOM.
Encapsulación de un archivo
1. Encapsulación en un archivo JavaScript
Guarda todo el comportamiento de JavaScript en un archivo independiente
llamado, por ejemplo,
escapeTool.js
. Encapsularemos las funciones y eventos en un módulo.
2. Página web para usarlo
Ahora puedes crear una página web diferente que haga uso del archivo
encapsulado
escapeTool.js
. Guárdalo en el mismo directorio o en un subdirectorio, como
scripts/
.
3. Estructura del proyecto
Asegúrate de organizar tu proyecto así:
Cómo funciona esta estructura
-
Encapsulación: La funcionalidad está en
escapeTool.js
, dentro de un módulo que oculta sus funciones internas y exporta solo la funcióninitialize
. - Relación con HTML y CSS: El código JavaScript manipula el DOM del HTML y puede aplicar estilos dinámicamente al interactuar con los elementos.
-
Uso en otra página web: Importa el archivo
escapeTool.js
en cualquier página usando<script>
y luego inicializa las funcionalidades llamando aescapeTool.initialize()
.
Con esta estructura, puedes usar las funciones encapsuladas en múltiples páginas web sin duplicar el código.
Reutilizar codigo
Puedes reutilizar tanto el diseño estructurado (HTML) como los estilos (CSS) en múltiples páginas web para evitar tener que rediseñar y reestructurar el código. Esto se logra al externalizar el HTML y los estilos en un componente reutilizable y luego integrarlos dinámicamente en cualquier página web. Te explico cómo hacerlo:
1. Paso 1: Guardar el HTML estructurado como un archivo de plantilla
Extrae el código HTML principal (el contenido de
<div class="container">
) y guárdalo en un archivo separado, por ejemplo,
template.html
.
Archivo: template.html
2. Paso 2: Guardar los estilos CSS en un archivo independiente
Extrae el código CSS y guárdalo en un archivo llamado
styles.css
.
Archivo: styles.css
3. Paso 3: Usar JavaScript para cargar dinámicamente el diseño y los estilos
En tu página principal, usa JavaScript para cargar tanto el HTML de
template.html
como los estilos de
styles.css
.
Archivo principal: index.html
4. Estructura del proyecto
Organiza tus archivos en el proyecto de la siguiente forma:
Ventajas de este enfoque
- Reutilización: Puedes usar
template.html
ystyles.css
en múltiples páginas sin duplicar código. - Modularidad: El diseño (HTML), los estilos (CSS) y la funcionalidad (JS) están separados, lo que facilita su mantenimiento.
- Mantenimiento: Si necesitas actualizar el diseño o los estilos, solo actualizas los archivos compartidos.