JavaScript ਵਿੱਚ 𝗙𝗮𝗰𝘁𝗼𝗿𝘆 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 ਅਤੇ 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗼𝗿 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀
ਇੱਕ-ਇੱਕ ਕਰਕੇ objects ਬਣਾਉਣਾ ਇੱਕ ਗਲਤੀ ਹੈ।
ਜੇਕਰ ਤੁਸੀਂ ਹਰ user ਜਾਂ classmate ਲਈ ਮੈਨੂਅਲੀ (manually) ਇੱਕ object ਲਿਖਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਕੋਡ ਨੂੰ ਵਾਰ-ਵਾਰ ਦੁਹਰਾਉਂਦੇ ਹੋ। ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ 100 users ਹਨ, ਤਾਂ ਤੁਸੀਂ ਇੱਕੋ logic ਨੂੰ 100 ਵਾਰ ਲਿਖਦੇ ਹੋ। ਇਸ ਨਾਲ bugs ਆ ਸਕਦੇ ਹਨ। ਤੁਸੀਂ ਅਚਾਨਕ ਬਾਅਦ ਵਿੱਚ ਕਿਸੇ property ਨੂੰ ਬਦਲ ਸਕਦੇ ਹੋ ਅਤੇ ਆਪਣੀ application ਨੂੰ ਖਰਾਬ ਕਰ ਸਕਦੇ ਹੋ।
ਸਾਫ਼ ਕੋਡ ਲਿਖਣ ਲਈ ਇਸ ਦੀ ਬਜਾਏ ਇਹਨਾਂ ਦੋਵਾਂ patterns ਦੀ ਵਰਤੋਂ ਕਰੋ।
- Factory Functions
ਇੱਕ ਅਸਲੀ ਫੈਕਟਰੀ ਬਾਰੇ ਸੋਚੋ। ਕੱਚਾ ਮਾਲ (Raw materials) ਅੰਦਰ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਤਿਆਰ ਉਤਪਾਦ (finished product) ਬਾਹਰ ਆਉਂਦਾ ਹੈ।
ਇੱਕ factory function parameters ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਨਵਾਂ object return ਕਰਦਾ ਹੈ।
Example:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
ਫਾਇਦੇ:
- ਤੁਸੀਂ logic ਨੂੰ ਇੱਕ ਵਾਰ ਲਿਖਦੇ ਹੋ।
- ਤੁਸੀਂ ਹਰ ਨਵੇਂ object ਲਈ function ਨੂੰ ਦੁਬਾਰਾ ਵਰਤਦੇ ਹੋ।
- ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਰਹਿੰਦਾ ਹੈ। name function scope ਦੇ ਅੰਦਰ ਰਹਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਅਚਾਨਕ ਬਾਹਰੋਂ ਇਸ ਨੂੰ overwrite ਨਹੀਂ ਕਰ ਸਕਦੇ।
- Constructor Functions
Constructor functions ਵੀ objects ਬਣਾਉਂਦੇ ਹਨ। ਉਹ "new" keyword ਅਤੇ "this" keyword ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। ਰਵਾਇਤ (convention) ਅਨੁਸਾਰ, ਤੁਸੀਂ ਇਹਨਾਂ ਦੀ ਸ਼ੁਰੂਆਤ ਵੱਡੇ ਅੱਖਰ (capital letter) ਨਾਲ ਕਰਦੇ ਹੋ।
Example:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
ਜਦੋਂ ਤੁਸੀਂ "new" ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ JavaScript ਤੁਹਾਡੇ ਲਈ ਕੰਮ ਕਰਦੀ ਹੈ:
- ਇਹ ਇੱਕ ਨਵਾਂ object ਬਣਾਉਂਦੀ ਹੈ।
- ਇਹ ਇਸਨੂੰ "this" ਨੂੰ assign ਕਰਦੀ ਹੈ।
- ਇਹ ਆਪਣੇ ਆਪ object return ਕਰਦੀ ਹੈ।
ਤੁਹਾਨੂੰ "return" statement ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
ਆਪਣੇ ਕੋਡ ਨੂੰ scale ਕਰਨਾ
ਤੁਸੀਂ ਵੱਡੀ ਮਾਤਰਾ ਵਿੱਚ ਡਾਟਾ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇਹਨਾਂ patterns ਨੂੰ arrays ਦੇ ਨਾਲ ਜੋੜ ਸਕਦੇ ਹੋ। ਹਰ ਨਾਮ ਟਾਈਪ ਕਰਨ ਦੀ ਬਜਾਏ, map function ਦੀ ਵਰਤੋਂ ਕਰੋ।
Example:
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
ਹੁਣ ਤੁਹਾਡੇ ਕੋਲ ਵਰਤਣ ਲਈ objects ਦੀ ਇੱਕ ਲਿਸਟ ਤਿਆਰ ਹੈ।
Summary:
- ਦੁਹਰਾਓ ਤੋਂ ਬਚਣ ਲਈ ਮੈਨੂਅਲ object creation ਤੋਂ ਬਚੋ।
- Logic ਨੂੰ ਇਕੱਠਾ (encapsulate) ਕਰਨ ਅਤੇ ਡਾਟਾ ਦੀ ਰੱਖਿਆ ਕਰਨ ਲਈ Factory Functions ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਆਟੋਮੈਟਿਕ object creation ਲਈ "new" keyword ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ Constructor Functions ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਹਮੇਸ਼ਾ ਆਪਣਾ logic ਇੱਕ ਵਾਰ ਲਿਖੋ ਅਤੇ ਇਸਨੂੰ ਹਰ ਜਗ੍ਹਾ ਦੁਬਾਰਾ ਵਰਤੋ।
Source: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb