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.
- 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:
- Você escreve a lógica uma única vez.
- Você reutiliza a função para cada novo objeto.
- Os dados permanecem seguros. O nome permanece dentro do escopo da função. Você não pode sobrescrevê-lo acidentalmente de fora.
- 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ê:
- Ele cria um novo objeto.
- Ele o atribui ao "this".
- Ele retorna o objeto automaticamente.
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:
- Evite a criação manual de objetos para prevenir repetições.
- Use Factory Functions para encapsular a lógica e proteger os dados.
- Use Constructor Functions para aproveitar a palavra-chave "new" para a criação automática de objetos.
- Sempre escreva sua lógica uma única vez e reutilize-a em todos os lugares.
Fonte: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb