Funciones de fábrica y funciones constructoras en JavaScript

Crear objetos uno por uno es un error.

Si escribes un objeto manual para cada usuario o compañero de clase, repites código. Si tienes 100 usuarios, escribes la misma lógica 100 veces. Esto provoca errores. Podrías cambiar accidentalmente una propiedad más tarde y romper tu aplicación.

En su lugar, utiliza estos dos patrones para escribir código limpio.

  1. Funciones de fábrica (Factory Functions)

Piensa en una fábrica real. Entran materias primas. Sale un producto terminado.

Una función de fábrica recibe parámetros y devuelve un nuevo objeto.

Ejemplo:

function classFactory(name) {
    return {
        reply() {
            return `${name} is present`
        }
    }
}

Los beneficios:

  1. Funciones constructoras (Constructor Functions)

Las funciones constructoras también crean objetos. Utilizan la palabra clave new y la palabra clave this. Por convención, estas comienzan con una letra mayúscula.

Ejemplo:

function Classmate(name) {
    this.name = name
    this.reply = function() {
        return `${this.name} is present`
    }
}

Cuando usas new, JavaScript hace el trabajo por ti:

No necesitas una sentencia return.

Escalando tu código

Puedes combinar estos patrones con arrays para manejar grandes cantidades de datos. En lugar de escribir cada nombre, utiliza una función map.

Ejemplo:

const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))

Ahora tienes una lista de objetos lista para usar.

Resumen:

Fuente: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb