Funções de fábrica em JavaScript

Funções de fábrica em JavaScript
Ao escrever um programa, há situações em que você deseja adicionar várias instâncias de um objeto rapidamente. Funções de fábrica em JavaScript são usados ​​explicitamente para esse fim. Uma fábrica do mundo real pode produzir de maneira massante e rapidamente várias cópias de um item; O mesmo vale para as funções da fábrica.

Em JavaScript, uma função de fábrica retorna um objeto que pode ser reutilizado para fazer várias instâncias do mesmo objeto. Além disso, pode aceitar argumentos que permitem que você personalize o objeto retornado.

Este artigo discutirá as funções de fábrica em JavaScript com a ajuda de exemplos apropriados. Então vamos começar!

Função de fábrica em JavaScript

As funções de fábrica JavaScript têm a mesma funcionalidade que uma função de classe ou um construtor possui; No entanto, essas funções não usam o “novo”Palavra -chave ao criar uma instância de objeto e retornar um objeto que compreenda o método ou valores adicionados.

Portanto, se você tiver lógica complexa e precisar construir várias instâncias de objeto repetidamente, adicione essa lógica uma vez em uma função de fábrica e depois a utilize para criar objetos.

Exemplo: como usar funções de fábrica em javascript
Primeiro de tudo, criaremos um “funcionário1“Objeto com duas propriedades:“nome" e "designação”:

Seja funcionário1 =
Nome: 'Alex',
Designação: 'Gerente' ,
showInfo ()
devolver isso.nome + 'é um' + this.designação;

;
console.log (funcionário1.showInfo ());

Nós também adicionamos um “showinfo ()”Método que produzirá as propriedades do objeto em um formato de string.

Confira a saída do método showInfo () para o “funcionário1”Objeto:

Agora, digamos que você queira criar outro objeto “funcionário2”Para um funcionário diferente. Para esse fim, você deve escrever o mesmo código ao alterar os valores das propriedades de acordo com seus requisitos:

Deixe funcionário2 =
Nome: 'Stepheny',
Designação: 'Editor de vídeo' ,
showInfo ()
devolver isso.nome + 'é um' + this.designação;

;
console.log (funcionário2.showInfo ());

Você pode seguir o procedimento acima para criar alguns objetos de funcionários. Mas e se você quiser criar 100 objetos de funcionários? Nesse caso, criar cada objeto separadamente enquanto escreva o mesmo código repetidamente consumirá muito tempo, esforço e pode tornar seu código complexo para lidar.

Você pode utilizar uma função de fábrica para ajudá -lo a evitar a duplicação de código. Ele cria um objeto sem mergulhar em classes complexas ou usar o “novoPalavra -chave.

Agora, criaremos uma função de fábrica JavaScript “createEmployee”Para criar nossos objetos de funcionários:

função createEmployee (nome, designação)
retornar
nome nome,
Designação: designação,
showInfo ()
devolver isso.nome + 'é um' + this.designação;

A função de fábrica acima, retornará um objeto que compreendendo os valores da propriedade passados ​​como argumentos.

Na próxima etapa, criaremos três objetos de funcionários nomeados como Alex, Smith, e Marie:

Deixe Alex = CreateEmployee ('Alex', 'Gerente');
Let Smith = CreateEmployee ('Smith', 'Editor de vídeo');
Seja Marie = CreateEmployee ('Marie', 'Content Writer');

Depois de fazer isso, invocaremos a função showInfo () para cada objeto do funcionário:

console.log (Alex.showInfo ());
console.Log (Smith.showInfo ());
console.Log (Marie.showInfo ());

A execução do programa JavaScript fornecido significa que criamos com sucesso o objeto de funcionários com a ajuda de funções de fábrica:

Problema de espaço de memória com funções de fábrica

No exemplo anterior, quando você cria um objeto de funcionário e o armazena em uma variável, esse objeto precisa de espaço de memória, diminuindo o desempenho do código. No entanto, você pode evitar esse problema removendo o “showinfo ()”Método da função da fábrica e armazená -lo em outra variável.

Do nosso programa, removeremos o “showinfo ()”Método do CreateEmploye () Função de fábrica e armazená -lo em uma variável separada chamada“x”:

função createEmployee (nome, designação)
retornar
nome nome,
Designação: designação,


const x =
showInfo ()
devolver isso.nome + 'é um' + this.designação;

Em seguida, criaremos dois objetos de funcionários, “Alex" e "Smith,"E antes de invocar o"showinfo ()”Método para esses objetos, atribuiremos o método do objeto“x”Para o objeto do funcionário da seguinte maneira:

Deixe Alex = CreateEmployee ('Alex', 'Gerente');
Let Smith = CreateEmployee ('Smith', 'Editor de vídeo');
Alex.showInfo = x.showinfo;
Smith.showInfo = x.showinfo;
console.log (Alex.showInfo ());
console.Log (Smith.showInfo ());

Aqui está a saída que obtemos ao executar o programa acima:

No entanto, a abordagem fornecida não é escalável se você deseja adicionar vários métodos para um objeto de funcionário, porque você precisa atribuí -los individualmente. Se for esse o caso, você deve utilizar “Objeto.criar()”Método em seu programa JavaScript.

Objeto.Método Create () em JavaScript

O objeto.Create () Método em JavaScript cria um novo objeto baseado no objeto existente como o novo protótipo de objeto.

Podemos usar o objeto.Método Create () dessa maneira:

const x =
showInfo ()
devolver isso.nome + 'é um' + this.designação;

função createEmployee (nome, designação)
Deixe o funcionário = objeto.criar (x);
funcionário.nome = nome;
funcionário.designação = designação;
funcionário de retorno;

Em seguida, criaremos nossos objetos de funcionários e depois invocaremos o método de “x”Objeto que é showInfo ():

Deixe Alex = CreateEmployee ('Alex', 'Gerente');
Let Smith = CreateEmployee ('Smith', 'Editor de vídeo');
console.log (Alex.showInfo ());
console.Log (Smith.showInfo ());

A saída que vimos no console significa que nosso programa está funcionando perfeitamente bem com o objeto.criação () implementação do método.

Conclusão

Em JavaScript, uma função de fábrica é um tipo de função que retorna um objeto e não requer o uso de novo palavra -chave. Pode ser usado para inicializar um objeto, semelhante a um construtor. Também é considerado uma ferramenta útil que permite produzir várias instâncias de objetos rapidamente. Este artigo discutiu funções de fábrica em JavaScript com a ajuda de exemplos apropriados.