ჯავასკრიპტის თითქმის ყველა თანამედროვე framework-ში, გვხვდება ეგრედ წოდებული factory ფუნქციები, ამ ბლოგში, შევეცდები მარტივი მაგალითებით ავხსნა თუ რას წარმოადგენს factory ფუნქცია და რითი განსხვავდება ის ჯავასკრიპტის კლასებისგან.
factory function (ქარხანა ფუნქცია) არის ფუნქცია, რომელიც აბრუნებს ობიექტს. თავად სახელწოდებაც პირობითადაა შერქმეული, ვინაიდან ეს ფუნქციები ქმნიან ობიექტებს.
factory ფუნქციების საშუალებით, შეგვიძლია შევქმნათ ობიექტი new
საკვანძო სიტყვის (keyword) ან constructor()
ფუნქციის გარეშე, ასევე არაა საჭირო გამოვიყენოთ this
საკვანძო სიტყვა.
მაგალითი:
function createPerson(name, age) {
return {
name,
age,
greet() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
};
}
const person = createPerson("Alice", 30);
person.greet(); // დაიბეჭდება: Hello, my name is Alice and I'm 30 years old.
ასევე ეს ფუნქციები ენკაფსულაციის საშუალებასაც გვაძლევს, რაც გულისხმობას, იმას, რომ გვქონდეს ე.წ. private ცვლადები და მეთოდები, მაგრამ constructor ფუნქციებისგან განსხვავებით factory ფუნქციებში არ შეგვიძლია გამოვიყენოთ inheritance.
მაგალითი:
function createPerson(name, age) {
// Private data
let secret = "I'm a secret!";
return {
name,
age,
greet() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
},
revealSecret() {
console.log(secret);
},
};
}
const person = createPerson("Alice", 30);
person.revealSecret(); // დაიბეჭდება: I'm a secret!
პ.ს. მოცემული მაგალითებში არ არის სრულფასოვნად მოყვანილი ყველა ძირითადი განსხვავება კლსაებთან მიმართებაში, დეტალურ განსხვავებებს შემოგთავაზებთ ცალკე ბლოგში.