JavaScript-இல் Factory Functions மற்றும் Constructor Functions

ஒவ்வொரு ஆப்ஜெக்ட்டையும் (object) தனித்தனியாக உருவாக்குவது ஒரு தவறு.

உங்களிடம் 100 வகுப்புத் தோழர்கள் இருந்து, ஒவ்வொருவருக்கும் ஒரு ஆப்ஜெக்ட்டை உருவாக்க வேண்டும் என்றால், தனித்தனியாக ஆப்ஜெக்ட்களை எழுதுவது சிக்கல்களை ஏற்படுத்தும். நீங்கள் உங்கள் லாஜிக்கை (logic) பலமுறை மீண்டும் மீண்டும் எழுத வேண்டியிருக்கும். மேலும், பிழைகள் (bugs) ஏற்படவும் வாய்ப்புள்ளது. உதாரணமாக, உங்கள் குறியீட்டில் (code) பின்னாளில் ஒரு property பெயரைத் தெரியாமல் மாற்றிவிடக்கூடும்.

லாஜிக்கை மீண்டும் பயன்படுத்த (reuse) உங்களுக்கு ஒரு சிறந்த வழி தேவை.

Factory Functions ஒரு தொழிற்சாலையைப் பற்றி யோசியுங்கள். நீங்கள் மூலப்பொருட்களை உள்ளிடுகிறீர்கள், அது ஒரு முடிக்கப்பட்ட பொருளைத் தருகிறது. ஒரு factory function-உம் அதையே செய்கிறது. இது parameters-களைப் பெற்று ஒரு புதிய ஆப்ஜெக்ட்டைத் திருப்பித் தருகிறது (returns).

Example:

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

இந்த அணுகுமுறை பெயரைப் பாதுகாப்பாக வைக்கிறது. பெயர் function scope-க்குள் இருப்பதால், நீங்கள் அதைத் தெரியாமல் மாற்ற முடியாது. நீங்கள் லாஜிக்கை ஒருமுறை எழுதி பலமுறை பயன்படுத்தலாம்.

Constructor Functions Constructor functions-உம் ஆப்ஜெக்ட்களை உருவாக்குகின்றன. இவை this keyword மற்றும் new keyword ஆகியவற்றைப் பயன்படுத்துகின்றன. வழக்கப்படி, இந்த functions ஒரு பெரிய எழுத்தில் (capital letter) தொடங்கும்.

Example:

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

நீங்கள் new keyword-ஐப் பயன்படுத்தும்போது, JavaScript உங்களுக்காக வேலையைச் செய்கிறது. இது ஒரு புதிய ஆப்ஜெக்ட்டை உருவாக்கி, அதை this-க்கு ஒதுக்கி, தானாகவே அதைத் திருப்பித் தருகிறது. உங்களுக்குத் தனியாக return statement தேவையில்லை.

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()))

இது உங்கள் குறியீட்டைத் தூய்மையாகவும் (clean), எளிதில் விரிவுபடுத்தக்கூடியதாகவும் (scalable) மாற்றுகிறது.

இதன் முக்கிய நோக்கம் எளிமையானது:

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