JavaScript ನಲ್ಲಿ Factory Functions ಮತ್ತು Constructor Functions

ಒಂದೊಂದಾಗಿ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು (objects) ರಚಿಸುವುದು ಒಂದು ತಪ್ಪು.

ನಿಮ್ಮ ಬಳಿ 100 ಸಹಪಾಠಿಗಳಿದ್ದು, ಪ್ರತಿಯೊಬ್ಬರಿಗೂ ಒಂದು ಆಬ್ಜೆಕ್ಟ್ ರಚಿಸಬೇಕಿದ್ದರೆ, ಪ್ರತ್ಯೇಕವಾಗಿ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ಬರೆಯುವುದು ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ನೀವು ನಿಮ್ಮ ಲಾಜಿಕ್ ಅನ್ನು ಪದೇ ಪದೇ ಪುನರಾವರ್ತಿಸುತ್ತೀರಿ. ಇದರಿಂದ ಬಗ್‌ಗಳು (bugs) ಬರುವ ಅಪಾಯವೂ ಇರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಕೋಡ್‌ನಲ್ಲಿ ನಂತರದ ಹಂತದಲ್ಲಿ ನೀವು ಅಚಾನಕ್ಕಾಗಿ ಒಂದು ಪ್ರಾಪರ್ಟಿ ಹೆಸರನ್ನು (property name) ಬದಲಾಯಿಸಬಹುದು (overwrite).

ಲಾಜಿಕ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ನಿಮಗೆ ಉತ್ತಮವಾದ ಮಾರ್ಗ ಬೇಕು.

Factory Functions ಒಂದು ಫ್ಯಾಕ್ಟರಿಯನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳಿ. ನೀವು ಅಲ್ಲಿ ಕಚ್ಚಾ ವಸ್ತುಗಳನ್ನು ಹಾಕುತ್ತೀರಿ ಮತ್ತು ಸಿದ್ಧಪಡಿಸಿದ ಉತ್ಪನ್ನವನ್ನು ಪಡೆಯುತ್ತೀರಿ. ಒಂದು factory function ಕೂಡ ಇದನ್ನೇ ಮಾಡುತ್ತದೆ. ಇದು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು (parameters) ಪಡೆದು ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ (returns).

Example:

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

ಈ ವಿಧಾನವು ಹೆಸರನ್ನು ಸುರಕ್ಷಿತವಾಗಿಡುತ್ತದೆ. ಹೆಸರು ಫಂಕ್ಷನ್ ಸ್ಕೋಪ್‌ನಲ್ಲೇ (function scope) ಇರುವುದರಿಂದ ನೀವು ಅದನ್ನು ಅಚಾನಕ್ಕಾಗಿ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನೀವು ಲಾಜಿಕ್ ಅನ್ನು ಒಮ್ಮೆ ಬರೆದು ಅದನ್ನು ಹಲವು ಬಾರಿ ಮರುಬಳಕೆ ಮಾಡಬಹುದು.

Constructor Functions Constructor functions ಕೂಡ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ರಚಿಸುತ್ತವೆ. ಇವು this ಕೀವರ್ಡ್ ಮತ್ತು new ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ರೂಢಿಯ ಪ್ರಕಾರ (By convention), ಈ ಫಂಕ್ಷನ್‌ಗಳು ಕ್ಯಾಪಿಟಲ್ ಅಕ್ಷರದಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ.

Example:

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

ನೀವು new ಕೀವರ್ಡ್ ಬಳಸಿದಾಗ, JavaScript ನಿಮಗಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಇದು ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಅದನ್ನು this ಗೆ ನಿಯೋಜಿಸುತ್ತದೆ (assigns) ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅದನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ನೀವು return ಸ್ಟೇಟ್‌ಮೆಂಟ್ ಬಳಸುವ ಅಗತ್ಯವಿಲ್ಲ.

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

ಇದು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಸ್ವಚ್ಛವಾಗಿ ಮತ್ತು ಸ್ಕೇಲೆಬಲ್ (scalable) ಆಗಿ ಮಾಡುತ್ತದೆ.

ಇದರ ಮುಖ್ಯ ಗುರಿ ಸರಳವಾಗಿದೆ:

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