𝗙𝗮𝗰𝘁𝗼𝗿𝘆 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗮𝗻𝗱 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗼𝗿 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗶𝗻 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁

ഓരോന്നായി ഒബ്ജക്റ്റുകൾ (objects) നിർമ്മിക്കുന്നത് ഒരു തെറ്റാണ്.

ഓരോ ഉപയോക്താവിനും (user) അല്ലെങ്കിൽ സഹപാഠിക്കും (classmate) വേണ്ടി നിങ്ങൾ മാനുവലായി ഒരു ഒബ്ജക്റ്റ് എഴുതുകയാണെങ്കിൽ, നിങ്ങൾ കോഡ് ആവർത്തിക്കുന്നു. നിങ്ങൾക്ക് 100 ഉപയോക്താക്കളുണ്ടെങ്കിൽ, നിങ്ങൾ ഒരേ ലോജിക് തന്നെ 100 തവണ എഴുതേണ്ടി വരും. ഇത് ബഗുകൾക്ക് (bugs) കാരണമാകും. പിന്നീട് അറിയാതെ ഒരു പ്രോപ്പർട്ടി (property) മാറ്റുന്നത് വഴി നിങ്ങളുടെ ആപ്ലിക്കേഷൻ തകരാറിലാകാനും സാധ്യതയുണ്ട്.

വൃത്തിയുള്ള കോഡ് എഴുതുന്നതിനായി പകരം ഈ രണ്ട് പാറ്റേണുകൾ (patterns) ഉപയോഗിക്കുക.

  1. Factory Functions

ഒരു യഥാർത്ഥ ഫാക്ടറിയെക്കുറിച്ച് ചിന്തിക്കുക. അസംസ്‌കൃത വസ്തുക്കൾ അകത്തേക്ക് പോകുന്നു, ഒരു പൂർത്തിയായ ഉൽപ്പന്നം പുറത്തേക്ക് വരുന്നു.

ഒരു factory function പാരാമീറ്ററുകൾ സ്വീകരിക്കുകയും ഒരു പുതിയ ഒബ്ജക്റ്റ് തിരികെ നൽകുകയും (return) ചെയ്യുന്നു.

Example:

function classFactory(name) {
    return {
        reply() {
            return `${name} is present`
        }
    }
}

ഗുണങ്ങൾ:

  1. Constructor Functions

Constructor functions-ഉം ഒബ്ജക്റ്റുകൾ നിർമ്മിക്കുന്നു. ഇവ "new" എന്ന കീവേഡും (keyword) "this" എന്ന കീവേഡും ഉപയോഗിക്കുന്നു. ഒരു രീതി അനുസരിച്ച് (convention), ഇവയുടെ പേര് തുടങ്ങുന്നത് ഒരു ക്യാപിറ്റൽ ലെറ്റർ (capital letter) ഉപയോഗിച്ചായിരിക്കും.

Example:

function Classmate(name) {
    this.name = name
    this.reply = function() {
        return `${this.name} is present`
    }
}

നിങ്ങൾ "new" ഉപയോഗിക്കുമ്പോൾ, JavaScript നിങ്ങൾക്കായി ഈ ജോലികൾ ചെയ്യുന്നു:

നിങ്ങൾക്ക് ഒരു "return" സ്റ്റേറ്റ്‌മെന്റ് ആവശ്യമില്ല.

Scaling your code

വലിയ അളവിലുള്ള ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിനായി ഈ പാറ്റേണുകളെ അറേകളുമായി (arrays) സംയോജിപ്പിക്കാം. ഓരോ പേരും ടൈപ്പ് ചെയ്യുന്നതിന് പകരം ഒരു map ഫംഗ്ഷൻ ഉപയോഗിക്കുക.

Example:

const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))

ഇപ്പോൾ ഉപയോഗിക്കാൻ തയ്യാറായ ഒബ്ജക്റ്റുകളുടെ ഒരു ലിസ്റ്റ് നിങ്ങളുടെ പക്കലുണ്ട്.

സംഗ്രഹം:

Source: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb