JavaScript में Factory Functions और Constructor Functions
एक-एक करके ऑब्जेक्ट्स बनाना एक गलती है।
यदि आप प्रत्येक यूजर या क्लासमेट के लिए मैन्युअल रूप से ऑब्जेक्ट लिखते हैं, तो आप कोड को दोहराते हैं। यदि आपके पास 100 यूजर्स हैं, तो आप एक ही लॉजिक को 100 बार लिखते हैं। इससे बग्स (bugs) पैदा होते हैं। आप बाद में गलती से किसी प्रॉपर्टी को बदल सकते हैं और अपने एप्लिकेशन को खराब कर सकते हैं।
क्लीन कोड लिखने के लिए इसके बजाय इन दो पैटर्न्स का उपयोग करें।
- Factory Functions
एक असली फैक्ट्री के बारे में सोचें। कच्चा माल अंदर जाता है और एक तैयार उत्पाद बाहर आता है।
एक factory function पैरामीटर्स लेता है और एक नया ऑब्जेक्ट रिटर्न करता है।
Example:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
इसके लाभ:
- आप लॉजिक को एक बार लिखते हैं।
- आप हर नए ऑब्जेक्ट के लिए फंक्शन का पुन: उपयोग (reuse) करते हैं।
- डेटा सुरक्षित रहता है।
nameफंक्शन के स्कोप (scope) के अंदर रहता है। आप गलती से इसे बाहर से ओवरराइट नहीं कर सकते।
- Constructor Functions
Constructor functions भी ऑब्जेक्ट्स बनाते हैं। वे "new" कीवर्ड और "this" कीवर्ड का उपयोग करते हैं। कन्वेंशन (convention) के अनुसार, आप इन्हें कैपिटल लेटर से शुरू करते हैं।
Example:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
जब आप "new" का उपयोग करते हैं, तो JavaScript आपके लिए काम कर देता है:
- यह एक नया ऑब्जेक्ट बनाता है।
- यह इसे "this" को असाइन करता है।
- यह ऑब्जेक्ट को ऑटोमैटिकली रिटर्न करता है।
आपको "return" स्टेटमेंट की आवश्यकता नहीं है।
अपने कोड को स्केल करना (Scaling your code)
आप बड़ी मात्रा में डेटा को संभालने के लिए इन पैटर्न्स को arrays के साथ जोड़ सकते हैं। हर नाम को टाइप करने के बजाय, एक map फंक्शन का उपयोग करें।
Example:
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
अब आपके पास उपयोग के लिए ऑब्जेक्ट्स की एक लिस्ट तैयार है।
सारांश:
- दोहराव से बचने के लिए मैन्युअल ऑब्जेक्ट क्रिएशन से बचें।
- लॉजिक को एनकैप्सुलेट (encapsulate) करने और डेटा को सुरक्षित रखने के लिए Factory Functions का उपयोग करें।
- ऑटोमैटिक ऑब्जेक्ट क्रिएशन के लिए "new" कीवर्ड का लाभ उठाने के लिए Constructor Functions का उपयोग करें।
- हमेशा अपना लॉजिक एक बार लिखें और उसे हर जगह पुन: उपयोग करें।
स्रोत: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb