𝗙𝗮𝗰𝘁𝗼𝗿𝘆 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗮𝗻𝗱 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗼𝗿 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗶𝗻 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁
ഓരോന്നായി ഒബ്ജക്റ്റുകൾ (objects) നിർമ്മിക്കുന്നത് ഒരു തെറ്റാണ്.
നിങ്ങൾക്ക് 100 സഹപാഠികളുണ്ടാവുകയും ഓരോരുത്തർക്കും ഓരോ ഒബ്ജക്റ്റ് നിർമ്മിക്കേണ്ടതുണ്ടാവുകയും ചെയ്താൽ, ഓരോന്നായി എഴുതുന്നത് പ്രശ്നങ്ങളിലേക്ക് നയിക്കും. നിങ്ങൾ ഒരേ ലോജിക് തന്നെ പലതവണ ആവർത്തിക്കേണ്ടി വരുന്നു. ഇത് ബഗുകൾ (bugs) ഉണ്ടാകാനുള്ള സാധ്യതയും വർദ്ധിപ്പിക്കുന്നു. ഉദാഹരണത്തിന്, കോഡിന്റെ പിൽക്കാലത്ത് അറിയാതെ ഒരു പ്രോപ്പർട്ടി പേര് (property name) നിങ്ങൾ മാറ്റി എഴുതാൻ സാധ്യതയുണ്ട്.
ലോജിക് വീണ്ടും ഉപയോഗിക്കാൻ (reuse) നിങ്ങൾക്ക് ഇതിലും മികച്ച ഒരു രീതി ആവശ്യമാണ്.
Factory Functions ഒരു ഫാക്ടറിയെക്കുറിച്ച് ചിന്തിക്കുക. നിങ്ങൾ അസംസ്കൃത വസ്തുക്കൾ നൽകുന്നു, പകരം ഒരു ഉൽപ്പന്നം ലഭിക്കുന്നു. ഒരു factory function ചെയ്യുന്നതും ഇതുതന്നെയാണ്. ഇത് പാരാമീറ്ററുകൾ (parameters) സ്വീകരിക്കുകയും ഒരു പുതിയ ഒബ്ജക്റ്റ് തിരികെ നൽകുകയും (return) ചെയ്യുന്നു.
Example:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
ഈ രീതി പേരിനെ സുരക്ഷിതമായി നിലനിർത്തുന്നു. പേര് ഫങ്ക്ഷൻ സ്കോപ്പിനുള്ളിൽ (function scope) ആയതുകൊണ്ട് നിങ്ങൾക്ക് അറിയാതെ അത് മാറ്റാൻ കഴിയില്ല. നിങ്ങൾ ലോജിക് ഒരിക്കൽ മാത്രം എഴുതുന്നു, അത് പലതവണ ഉപയോഗിക്കാം.
Constructor Functions
Constructor functions-ഉം ഒബ്ജക്റ്റുകൾ നിർമ്മിക്കുന്നു. ഇവ this കീവേഡും new കീവേഡും ഉപയോഗിക്കുന്നു. സാധാരണയായി, ഇത്തരം ഫങ്ക്ഷനുകൾ തുടങ്ങുന്നത് ഒരു ക്യാപിറ്റൽ ലെറ്ററിൽ (capital letter) നിന്നാണ്.
Example:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
നിങ്ങൾ new കീവേഡ് ഉപയോഗിക്കുമ്പോൾ, JavaScript നിങ്ങൾക്കായി ആ ജോലി ചെയ്യുന്നു. അത് ഒരു പുതിയ ഒബ്ജക്റ്റ് നിർമ്മിക്കുകയും, അതിനെ this-ലേക്ക് നൽകുകയും, സ്വയമേവ തിരികെ നൽകുകയും (return) ചെയ്യുന്നു. നിങ്ങൾക്ക് പ്രത്യേകം ഒരു return സ്റ്റേറ്റ്മെന്റ് ആവശ്യവുമില്ല.
Scaling your code വലിയ അളവിലുള്ള ഡാറ്റ കൈകാര്യം ചെയ്യാൻ ഈ രീതികളെ അറേകളുമായി (arrays) സംയോജിപ്പിക്കാം.
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
classmates.forEach(c => console.log(c.reply()))
ഇത് നിങ്ങളുടെ കോഡിനെ വൃത്തിയുള്ളതും സ്കെയിലബിൾ (scalable) ആ jugaക്കുന്നു.
പ്രധാന ലക്ഷ്യം ലളിതമാണ്:
- ലോജിക് ഒരിക്കൽ മാത്രം എഴുതുക.
- അത് എല്ലായിടത്തും വീണ്ടും ഉപയോഗിക്കുക.
- ആവർത്തനം ഒഴിവാക്കുക.
Source: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb