Funciones de fábrica y funciones constructoras en JavaScript
Crear objetos uno por uno es un error.
Si tienes 100 compañeros de clase y necesitas crear un objeto para cada uno, escribir objetos individuales genera problemas. Repites tu lógica demasiadas veces. También corres el riesgo de introducir errores (bugs). Por ejemplo, podrías sobrescribir accidentalmente el nombre de una propiedad más adelante en tu código.
Necesitas una mejor manera de reutilizar la lógica.
Funciones de fábrica Piensa en una fábrica. Introduces materias primas y obtienes un producto terminado. Una función de fábrica hace lo mismo. Recibe parámetros y devuelve un nuevo objeto.
Ejemplo:
function classFactory(name) {
return {
reply() {
return ${name} is present
}
}
}
Este enfoque mantiene el nombre seguro. No puedes cambiar el nombre accidentalmente porque permanece dentro del alcance (scope) de la función. Escribes la lógica una vez y la reutilizas muchas veces.
Funciones constructoras Las funciones constructoras también crean objetos. Utilizan la palabra clave this y la palabra clave new. Por convención, estas funciones comienzan con una letra mayúscula.
Ejemplo:
function Classmate(name) {
this.name = name
this.reply = function() {
return ${this.name} is present
}
}
Cuando usas la palabra clave new, JavaScript hace el trabajo por ti. Crea un nuevo objeto, lo asigna a this y lo devuelve automáticamente. No necesitas una sentencia return.
Escalando tu código Puedes combinar estos métodos con arrays para manejar grandes cantidades de datos.
const names = ['Kali', 'Andrew', 'Pearl', 'Percy'] const classmates = names.map(name => new Classmate(name))
classmates.forEach(c => console.log(c.reply()))
Esto hace que tu código sea limpio y escalable.
El objetivo principal es simple:
- Escribe tu lógica una vez.
- Reutilízala en todas partes.
- Evita la repetición.
Fuente: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb