𝗙𝗮𝗰𝘁𝗼𝗿𝘆 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗮𝗻𝗱 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗼𝗿 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗶𝗻 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁
એક પછી એક ઓબ્જેક્ટ્સ (objects) બનાવવા એ એક ભૂલ છે.
જો તમે દરેક યુઝર અથવા ક્લાસમેટ માટે મેન્યુઅલી ઓબ્જેક્ટ લખો છો, તો તમે કોડનું પુનરાવર્તન કરો છો. જો તમારી પાસે 100 યુઝર્સ હોય, તો તમારે 100 વાર સમાન લોજિક લખવું પડશે. આનાથી બગ્સ (bugs) આવી શકે છે. તમે કદાચ ભૂલથી પછીથી કોઈ પ્રોપર્ટી બદલી શકો છો અને તમારું એપ્લિકેશન બગડી શકે છે.
ક્લીન કોડ લખવા માટે તેના બદલે આ બે પેટર્નનો ઉપયોગ કરો.
- Factory Functions
એક સાચી ફેક્ટરી વિશે વિચારો. કાચો માલ અંદર જાય છે અને તૈયાર ઉત્પાદન બહાર આવે છે.
Factory function પેરામીટર્સ લે છે અને નવો ઓબ્જેક્ટ રિટર્ન કરે છે.
Example:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
ફાયદાઓ:
- તમે લોજિક એક જ વાર લખો છો.
- તમે દરેક નવા ઓબ્જેક્ટ માટે ફંક્શનનો ફરીથી ઉપયોગ કરી શકો છો.
- ડેટા સુરક્ષિત રહે છે. નામ ફંક્શન સ્કોપની અંદર રહે છે. તમે બહારથી ભૂલથી તેને ઓવરરાઈટ કરી શકતા નથી.
- Constructor Functions
Constructor functions પણ ઓબ્જેક્ટ્સ બનાવે છે. તેઓ "new" કીવર્ડ અને "this" કીવર્ડનો ઉપયોગ કરે છે. પરંપરા મુજબ, તમે આની શરૂઆત કેપિટલ લેટરથી કરો છો.
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))
હવે તમારી પાસે ઉપયોગ કરવા માટે ઓબ્જેક્ટ્સની યાદી તૈયાર છે.
Summary:
- પુનરાવર્તન રોકવા માટે મેન્યુઅલ ઓબ્જેક્ટ ક્રિએશન ટાળો.
- લોજિકને એન્કેપ્સ્યુલેટ (encapsulate) કરવા અને ડેટાને સુરક્ષિત રાખવા માટે Factory Functions નો ઉપયોગ કરો.
- ઓટોમેટિક ઓબ્જેક્ટ ક્રિએશન માટે "new" કીવર્ડનો લાભ લેવા Constructor Functions નો ઉપયોગ કરો.
- હંમેશા તમારું લોજિક એક જ વાર લખો અને તેનો દરેક જગ્યાએ ફરીથી ઉપયોગ કરો.
Source: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb