𝗙𝗮𝗰𝘁𝗼𝗿𝘆 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗮𝗻𝗱 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗼𝗿 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗶𝗻 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁
Kutengeneza objects moja baada ya nyingine ni kosa.
Ukijaribu kuandika object kwa mkono kwa kila mtumiaji au mwanafunzi mwenzako, unarudia kodi. Ikiwa una watumiaji 100, unaandika mantiki (logic) ile ile mara 100. Hii husababisha hitilafu (bugs). Unaweza kubadilisha sifa (property) kwa bahati mbaya baadaye na kuharibu programu yako.
Badala yake, tumia mifumo (patterns) hii miwili ili kuandika kodi safi.
- Factory Functions
Fikiria kiwanda halisi. Malighafi huingia ndani. Bidhaa iliyokamilika hutoka nje.
Factory function huchukua vigezo (parameters) na kurudisha object mpya.
Mfano:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
Faida zake:
- Unaandika mantiki mara moja tu.
- Unatumia tena function hiyo kwa kila object mpya.
- Data inabaki salama. Jina linabaki ndani ya upeo wa function (function scope). Huwezi kulibadilisha kwa bahati mbaya kutoka nje.
- Constructor Functions
Constructor functions pia hutengeneza objects. Hutumia neno "new" na neno "this". Kwa utaratibu wa kawaida, huanza hizi kwa herufi kubwa.
Mfano:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
Unapotumia "new", JavaScript inafanya kazi hiyo kwa ajili yako:
- Inatengeneza object mpya.
- Inaiweka kwenye "this".
- Inairudisha object hiyo kiotomatiki.
Huhitaji kauli ya "return".
Kukuza kodi yako (Scaling your code)
Unaweza kuunganisha mifumo hii na arrays ili kushughulikia kiasi kikubwa cha data. Badala ya kuandika kila jina, tumia map function.
Mfano:
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
Sasa una orodha ya objects zilizokuwa tayari kutumika.
Muhtasari:
- Epuka kutengeneza objects kwa mkono ili kuzuia kurudia mambo.
- Tumia Factory Functions ili kufunga mantiki (encapsulate logic) na kulinda data.
- Tumia Constructor Functions ili kutumia neno "new" kwa ajili ya kutengeneza objects kiotomatiki.
- Daima andika mantiki yako mara moja na uitumie tena kila mahali.
Chanzo: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb