Funções de Fábrica e Funções Construtoras em JavaScript

Criar objetos um por um é um erro.

Se você tiver 100 colegas de classe e precisar criar um objeto para cada um, escrever objetos individuais levará a problemas. Você repetirá sua lógica muitas vezes. Você também corre o risco de bugs. Por exemplo, você pode acidentalmente sobrescrever o nome de uma propriedade mais tarde no seu código.

Você precisa de uma maneira melhor de reutilizar a lógica.

Factory Functions Pense em uma fábrica. Você insere matérias-primas e obtém um produto acabado. Uma factory function faz o mesmo. Ela recebe parâmetros e retorna um novo objeto.

Exemplo:

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

Essa abordagem mantém o nome seguro. Você não pode alterar o nome acidentalmente porque ele permanece dentro do escopo da função. Você escreve a lógica uma vez e a reutiliza muitas vezes.

Constructor Functions Funções construtoras também criam objetos. Elas usam a palavra-chave this e a palavra-chave new. Por convenção, essas funções começam com uma letra maiúscula.

Exemplo:

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

Quando você usa a palavra-chave new, o JavaScript faz o trabalho por você. Ele cria um novo objeto, atribui-o ao this