Что такое фабричные функции в JavaScript?
Фабричная функция похожа на функции конструктора / функции класса, но вместо использования new для создания объекта фабричные функции просто создают объект и возвращают его.
Заводские функции — очень полезный инструмент в JavaScript. Функции Фабричные в JavaScript, аналогичны функциям конструктора / функции класса, но они не требуют использования » этого » ключевое слово для внутренних ценностей или использования » новой » ключевое слово при создании экземпляра новых объектов. Заводские функции могут содержать внутренние значения, методы и т.д., Как и обычные обычные функции. Заводские функции отличаются от обычных, поскольку они всегда возвращают объект, который будет содержать любое значение, метод и т.д.
Почему это полезно?
Если у нас сложная логика, и нам приходится снова и снова создавать несколько объектов с одинаковой логикой, мы можем написать логику один раз в функции и использовать эту функцию как фабрику для создания наших объектов. Это то же самое, что и настоящая фабрика, производящая продукцию.
Пример 1. У нас есть фабричная функция, которая будет производить новых роботов с единой логикой. Используя это, мы можем производить столько объектов / роботов, сколько захотим.
<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>
Выход:
Меня зовут Читти, робот.
Меня зовут Читти 2.0 Модернизированный, робот.
Пример 2:
<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>
Выход:
Привет, я Абхишек. Мне 20 лет.
Привет, я Радж. Мне 25 лет.