JavaScript ਵਿੱਚ Factory Functions ਅਤੇ Constructor Functions

ਇੱਕ-ਇੱਕ ਕਰਕੇ objects ਬਣਾਉਣਾ ਇੱਕ ਗਲਤੀ ਹੈ।

ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ 100 ਜਮਾਤੀ (classmates) ਹਨ ਅਤੇ ਤੁਹਾਨੂੰ ਹਰੇਕ ਲਈ ਇੱਕ object ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਵੱਖ-ਵੱਖ objects ਲਿਖਣ ਨਾਲ ਸਮੱਸਿਆਵਾਂ ਆ ਸਕਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਆਪਣੇ logic ਨੂੰ ਬਹੁਤ ਵਾਰ ਦੁਹਰਾਉਂਦੇ ਹੋ। ਇਸ ਨਾਲ bugs ਦਾ ਖਤਰਾ ਵੀ ਰਹਿੰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਆਪਣੇ code ਵਿੱਚ ਗਲਤੀ ਨਾਲ ਕਿਸੇ property ਦੇ ਨਾਮ ਨੂੰ overwrite ਕਰ ਸਕਦੇ ਹੋ।

ਤੁਹਾਨੂੰ logic ਨੂੰ ਦੁਬਾਰਾ ਵਰਤਣ (reuse) ਲਈ ਇੱਕ ਬਿਹਤਰ ਤਰੀਕੇ ਦੀ ਲੋੜ ਹੈ।

Factory Functions ਇੱਕ ਫੈਕਟਰੀ ਬਾਰੇ ਸੋਚੋ। ਤੁਸੀਂ ਕੱਚਾ ਮਾਲ ਪਾਉਂਦੇ ਹੋ ਅਤੇ ਇੱਕ ਤਿਆਰ ਉਤਪਾਦ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹੋ। ਇੱਕ factory function ਵੀ ਇਹੀ ਕਰਦਾ ਹੈ। ਇਹ parameters ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਨਵਾਂ object return ਕਰਦਾ ਹੈ।

Example:

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

ਇਹ ਤਰੀਕਾ ਨਾਮ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ। ਤੁਸੀਂ ਗਲਤੀ ਨਾਲ ਨਾਮ ਨਹੀਂ ਬਦਲ ਸਕਦੇ ਕਿਉਂਕਿ ਇਹ function scope ਦੇ ਅੰਦਰ ਰਹਿੰਦਾ ਹੈ। ਤੁਸੀਂ logic ਨੂੰ ਇੱਕ ਵਾਰ ਲਿਖਦੇ ਹੋ ਅਤੇ ਇਸ ਨੂੰ ਕਈ ਵਾਰ ਦੁਬਾਰਾ ਵਰਤਦੇ ਹੋ।

Constructor Functions Constructor functions ਵੀ objects ਬਣਾਉਂਦੇ ਹਨ। ਉਹ 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 ਤੁਹਾਡੇ ਲਈ ਕੰਮ ਕਰਦੀ ਹੈ। ਇਹ ਇੱਕ ਨਵਾਂ object ਬਣਾਉਂਦੀ ਹੈ, ਇਸਨੂੰ this ਨੂੰ ਅਸਾਈਨ ਕਰਦੀ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਆਪਣੇ ਆਪ return ਕਰ ਦਿੰਦੀ ਹੈ। ਤੁਹਾਨੂੰ 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()))

ਇਹ ਤੁਹਾਡੇ code ਨੂੰ ਸਾਫ਼ ਅਤੇ scalable ਬਣਾਉਂਦਾ ਹੈ।

ਮੁੱਖ ਉਦੇਸ਼ ਸਰਲ ਹੈ:

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