Patrón de módulo (IIFE)
Encapsule código con funciones invocadas inmediatamente.
Patrón de módulo (IIFE) es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 4 lecciones en total.
Qué resuelve el patrón módulo
Antes de los módulos ES, el patrón módulo permitía agrupar estado y comportamiento relacionados, mantener privados los detalles internos y exponer una API pública clara. Se basa en las clausuras.
La IIFE
Una IIFE (expresión de función invocada inmediatamente) es una función que se ejecuta en el momento en que se define. Al encerrarla entre paréntesis y llamarla, se crea un ámbito privado al instante.
const result = (function () {
return 42;
})();
console.log(result); // 42Por qué ejecutarla inmediatamente
La IIFE le proporciona un ámbito privado de un solo uso sin dejar una función con nombre definida sin necesidad. Todo lo que contiene queda aislado del espacio de nombres global.
(function () {
const temp = "not global";
console.log(temp);
})();
// temp is unreachable out hereDevolver una API pública
El patrón módulo es una IIFE que devuelve un objeto. Los métodos del objeto son clausuras sobre las variables privadas y forman la interfaz pública.
const counter = (function () {
let count = 0; // private
return {
inc: () => ++count,
value: () => count
};
})();
counter.inc();
console.log(counter.value()); // 1Privado frente a público
Todo lo que se declare dentro pero no se devuelva permanece privado. Solo se puede acceder a lo que incluya en el objeto devuelto.
const calc = (function () {
const pi = 3.14159; // private constant
return {
area: (r) => pi * r * r
};
})();
console.log(calc.area(2)); // 12.56636
console.log(calc.pi); // undefinedFunciones auxiliares privadas
Las funciones auxiliares pueden vivir dentro del módulo y ser utilizadas por los métodos públicos sin exponerse nunca.
const validator = (function () {
const clean = (s) => s.trim().toLowerCase(); // private
return {
isEmail: (s) => clean(s).includes("@")
};
})();
console.log(validator.isEmail(" A@B.com ")); // trueEl patrón módulo revelador
Una variante popular define todas las funciones de forma privada y después devuelve un objeto que "revela" referencias a las funciones públicas. Mantiene clara la lista de la API pública al final.
const store = (function () {
let items = [];
function add(x) { items.push(x); }
function count() { return items.length; }
return { add, count }; // reveal
})();
store.add("a");
console.log(store.count()); // 1Singletons
Como la IIFE se ejecuta una sola vez, un módulo es, en la práctica, un singleton: existe exactamente una instancia con un único conjunto de estado privado.
const config = (function () {
let settings = { theme: "dark" };
return {
get: (k) => settings[k],
set: (k, v) => { settings[k] = v; }
};
})();
config.set("theme", "light");
console.log(config.get("theme")); // "light"Pasar dependencias
Puede pasar objetos globales u otros módulos como argumentos de la IIFE, haciendo explícitas las dependencias y permitiendo una minificación segura.
const mathUtils = (function (M) {
return { roundUp: (n) => M.ceil(n) };
})(Math);
console.log(mathUtils.roundUp(4.1)); // 5Evitar contaminar el ámbito global
El objetivo es tener un solo nombre global (el módulo) en lugar de decenas de variables sueltas. Esto evita colisiones de nombres entre scripts.
Relación con los módulos ES
Hoy, import/export proporcionan un verdadero ámbito de módulo a nivel del lenguaje y han sustituido en gran medida este patrón. Sin embargo, comprender los módulos IIFE aclara cómo funcionan la privacidad y la encapsulación, y todavía los encontrará en código antiguo.
Comprobación rápida
El patrón módulo y las IIFE.
Resumen
El patrón módulo utiliza una IIFE para crear un ámbito privado y devuelve un objeto cuyos métodos son clausuras sobre un estado oculto. Los detalles internos permanecen privados; solo los miembros devueltos son públicos. Las variantes, como el patrón módulo revelador, hacen más clara la API, y los módulos funcionan como singletons. Los import/export de ES han sustituido este patrón, pero se basan en las mismas ideas.
Preguntas frecuentes
¿La lección «Patrón de módulo (IIFE)» es gratis?
Sí — el texto completo de «Patrón de módulo (IIFE)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Patrón de módulo (IIFE)»?
Encapsule código con funciones invocadas inmediatamente. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar JavaScript Academy?
No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Patrón de módulo (IIFE)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?
Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Cómo las clausuras capturan el estado
- Variables privadas con clausuras
- Patrón de módulo (IIFE)
- Funciones de fábrica