JavaScript 工厂函数是什么

JavaScript 工厂函数是什么

工厂函数与构造函数/类函数类似,但工厂函数不使用new关键字来创建对象,而是直接创建并返回对象。

JavaScript中的工厂函数是非常有用的工具。工厂函数与构造函数/类函数类似,但在给内部值赋值时不需要使用”this”关键字,也不需要使用”new”关键字来实例化新对象。工厂函数可以包含内部值、方法等,就像普通的常规函数一样。工厂函数与常规函数的区别在于它们总是返回一个包含任何值、方法等的对象。

为什么有用?

如果我们有复杂的逻辑,并且需要一遍又一遍地创建具有相同逻辑的多个对象,我们可以在一个函数中编写这些逻辑,并将该函数作为工厂来创建我们的对象。这就像现实世界中的工厂生产产品一样。

示例1: 我们有一个工厂函数,它可以用相同逻辑生成新的机器人。使用这个函数,我们可以生产出任意数量的对象/机器人。

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> 

输出:

My name is Chitti, the robot.
My name is Chitti 2.0 Upgraded, the robot.

示例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> 

输出:

Hello I am Abhishek. I am 20 years old. 
Hello I am Raj. I am 25 years old. 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程