La función de fábrica es similar a las funciones de constructor/funciones de clase, pero en lugar de usar new para crear un objeto, las funciones de fábrica simplemente crean un objeto y lo devuelven.
Factory Functions es una herramienta muy útil en JavaScript. Las funciones de fábrica en JavaScript son similares a las funciones de constructor/funciones de clase, pero no requieren el uso de la palabra clave ‘ this ‘ para valores internos o el uso de la palabra clave ‘ new ‘ al instanciar nuevos objetos. Las funciones de fábrica pueden contener valores internos, métodos, etc., al igual que las funciones regulares normales. Las funciones de fábrica se diferencian de las funciones normales en que siempre devuelven un objeto, que contendrá cualquier valor, método, etc.
¿Por qué es útil?
Si tenemos una lógica compleja y tenemos que crear múltiples objetos una y otra vez que tengan la misma lógica, podemos escribir la lógica una vez en una función y usar esa función como fábrica para crear nuestros objetos. Es exactamente lo mismo que una fábrica del mundo real que produce productos.
Ejemplo 1: Tenemos una función de fábrica que producirá nuevos robots con una sola lógica. Usando esto podemos producir tantos objetos/robots como queramos.
Javascript
<script> // Function creating new objects // without use of 'new' keyword function createRobot(name) { return { name: name, talk: function () { console.log('My name is ' + name + ', the robot.'); } }; } //Create a robot with name Chitti const robo1 = createRobot('Chitti'); robo1.talk(); // Create a robot with name Chitti 2.O Upgraded const robo2 = createRobot('Chitti 2.O Upgraded'); robo2.talk(); </script>
Producción:
My name is Chitti, the robot. My name is Chitti 2.0 Upgraded, the robot.
Ejemplo 2:
Javascript
<script> // Factory Function creating person var Person = function (name, age) { // creating person object var person = {}; // parameters as keys to this object person.name = name; person.age = age; // function to greet person.greeting = function () { return ( 'Hello I am ' + person.name + '. I am ' + person.age + ' years old. ' ); }; return person; }; var person1 = Person('Abhishek', 20); console.log(person1.greeting()); var person2 = Person('Raj', 25); console.log(person2.greeting()); </script>
Producción:
Hello I am Abhishek. I am 20 years old. Hello I am Raj. I am 25 years old.
Publicación traducida automáticamente
Artículo escrito por abhishekcs001 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA