¿Qué son las funciones de fábrica en JavaScript?

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *