Factory Functions and Constructor Functions in JavaScript

Criar objetos um por um é um erro.

Se você escrever um objeto manualmente para cada usuário ou colega de classe, você repetirá código. Se você tiver 100 usuários, escreverá a mesma lógica 100 vezes. Isso leva a bugs. Você pode acidentalmente alterar uma propriedade mais tarde e quebrar sua aplicação.

Em vez disso, use estes dois padrões para escrever um código limpo.

  1. Factory Functions

Pense em uma fábrica real. Matérias-primas entram. Um produto acabado sai.

Uma factory function recebe parâmetros e retorna um novo objeto.

Exemplo:

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

Os benefícios:

  1. Constructor Functions

Constructor functions também criam objetos. Elas utilizam a palavra-chave "new" e a palavra-chave "this". Por convenção, você as inicia com uma letra maiúscula.

Exemplo:

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

Quando você usa "new", o JavaScript faz o trabalho por você:

Você não precisa de uma instrução "return".

Escalando seu código

Você pode combinar esses padrões com arrays para lidar com grandes quantidades de dados. Em vez de digitar cada nome, use uma função map.

Exemplo:

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

Agora você tem uma lista de objetos pronta para uso.

Resumo:

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