JavaScript Academy · पाठ

फ़ैक्टरी फ़ंक्शन

क्लोज़र के माध्यम से निजी स्थिति वाले ऑब्जेक्ट बनाइए।

पाठ 4, कुल 4 में से13 चरण

फ़ैक्टरी फ़ंक्शन, CoddyKit पर JavaScript Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह JavaScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

फ़ैक्टरी फ़ंक्शन क्या है

फ़ैक्टरी फ़ंक्शन ऐसा कोई भी फ़ंक्शन है जो नया ऑब्जेक्ट लौटाता है। कंस्ट्रक्टर के विपरीत, आप इसे सामान्य रूप से कॉल करते हैं (new के बिना), और यह निजी स्थिति के लिए क्लोज़र का उपयोग कर सकता है।

function createUser(name) {
  return {
    name,
    greet: () => "Hi, I am " + name
  };
}
const u = createUser("Ada");
console.log(u.greet()); // "Hi, I am Ada"

new कीवर्ड के बिना

फ़ैक्टरी new और this से जुड़ी समस्याओं से बचती हैं। आप बस फ़ंक्शन को कॉल करते हैं और बदले में एक ऑब्जेक्ट प्राप्त करते हैं।

function point(x, y) {
  return { x, y };
}
const p = point(3, 4);
console.log(p.x, p.y); // 3 4

क्लोज़र के ज़रिए निजी स्थिति

फ़ैक्टरी में घोषित चर निजी होते हैं। लौटाए गए ऑब्जेक्ट की विधियाँ उन पर क्लोज़र बनाती हैं। यह मॉड्यूल पैटर्न जैसा ही है, लेकिन कई इंस्टेंस बनाता है।

function createCounter() {
  let count = 0; // private
  return {
    inc: () => ++count,
    get: () => count
  };
}
const c = createCounter();
c.inc();
console.log(c.get()); // 1

कई स्वतंत्र इंस्टेंस

फ़ैक्टरी को हर बार कॉल करने पर अपनी निजी स्थिति वाला नया ऑब्जेक्ट बनता है। सिंगलटन मॉड्यूल से यही इसका मुख्य अंतर है।

function createCounter() {
  let n = 0;
  return { inc: () => ++n };
}
const a = createCounter();
const b = createCounter();
console.log(a.inc(), a.inc()); // 1 2
console.log(b.inc());          // 1

परिकलित गुण

फ़ैक्टरी निर्माण के समय मानों की गणना कर सकती हैं और परिकलित विधियाँ उपलब्ध करा सकती हैं, जबकि आगत मान निजी रहते हैं।

function rectangle(w, h) {
  return {
    area: () => w * h,
    perimeter: () => 2 * (w + h)
  };
}
const r = rectangle(3, 4);
console.log(r.area());      // 12
console.log(r.perimeter()); // 14

डिफ़ॉल्ट और वैकल्पिक config

साधारण फ़ंक्शन होने के कारण, फ़ैक्टरी विनाशकारी असाइनमेंट के साथ डिफ़ॉल्ट मानों और विकल्पों को आसानी से संभालती हैं।

function createButton({ label = "OK", disabled = false } = {}) {
  return { label, disabled };
}
console.log(createButton());             // { label: "OK", disabled: false }
console.log(createButton({ label: "Go" })); // { label: "Go", disabled: false }

विरासत के बजाय संयोजन

फ़ैक्टरी संयोजन को प्राथमिकता देती हैं: वर्ग-श्रृंखला का विस्तार करने के बजाय व्यवहारों को मिलाकर ऑब्जेक्ट बनाएँ।

const canFly = (s) => ({ fly: () => s.name + " flies" });
function createBird(name) {
  const self = { name };
  return Object.assign(self, canFly(self));
}
console.log(createBird("Robin").fly()); // "Robin flies"

साझा व्यवहार

इंस्टेंस के बीच विधियाँ साझा करने के लिए, हर इंस्टेंस में अलग प्रतिलिपि बनाने के बजाय उन्हें एक बार परिभाषित करके assign करें। या क्लोज़र से मिलने वाली निजता के लाभ के लिए छोटी-सी अतिरिक्त लागत स्वीकार करें।

const behavior = {
  describe() { return "id " + this.id; }
};
function createItem(id) {
  return Object.assign({ id }, behavior);
}
console.log(createItem(7).describe()); // "id 7"

फ़ंक्शन भी लौटाना

जब वह अधिक साफ़ प्रोग्रामिंग इंटरफ़ेस हो, तब फ़ैक्टरी ऑब्जेक्ट के बजाय फ़ंक्शन भी लौटा सकती है और फिर भी निजी स्थिति को अपने साथ रख सकती है।

function multiplier(factor) {
  return (n) => n * factor;
}
const triple = multiplier(3);
console.log(triple(5)); // 15

फ़ैक्टरी बनाम कंस्ट्रक्टर

कंस्ट्रक्टर new, this और प्रोटोटाइप श्रृंखला का उपयोग करते हैं। फ़ैक्टरी अधिक सरल होती हैं, this से जुड़े बग से बचती हैं और क्लोज़र के ज़रिए वास्तविक निजता देती हैं; इसकी कीमत यह है कि विधियाँ प्रोटोटाइप पर साझा नहीं होतीं।

निर्माण के समय सत्यापन

फ़ैक्टरी लौटाने से पहले आगत मानों का सत्यापन कर सकती हैं और त्रुटि उत्पन्न कर सकती हैं या उन्हें सामान्य रूप दे सकती हैं। इससे सुनिश्चित होता है कि बनाया गया हर ऑब्जेक्ट मान्य हो।

function createAge(value) {
  if (value < 0) throw new Error("age must be >= 0");
  return { value };
}
console.log(createAge(30).value); // 30

त्वरित जाँच

फ़ैक्टरी फ़ंक्शन।

पुनरावृत्ति

फ़ैक्टरी फ़ंक्शन new या this के बिना ऑब्जेक्ट लौटाते हैं और निजी स्थिति के लिए क्लोज़र का उपयोग करते हैं। हर कॉल एक स्वतंत्र इंस्टेंस देती है, जिससे परिकलित गुण, डिफ़ॉल्ट config, संयोजन और सत्यापन संभव होते हैं। ये प्रोटोटाइप पर विधियाँ साझा करने के बदले सरलता और वास्तविक निजता देते हैं, इसलिए कंस्ट्रक्टर का एक साफ़, क्लोज़र-आधारित विकल्प हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
59
पाठ
200

अक्सर पूछे जाने वाले प्रश्न

क्या “फ़ैक्टरी फ़ंक्शन” पाठ निःशुल्क है?

हाँ — JavaScript Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “फ़ैक्टरी फ़ंक्शन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“फ़ैक्टरी फ़ंक्शन” में मैं क्या सीखूँगा?

क्लोज़र के माध्यम से निजी स्थिति वाले ऑब्जेक्ट बनाइए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ JavaScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या JavaScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर JavaScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“फ़ैक्टरी फ़ंक्शन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस JavaScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर JavaScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. क्लोज़र स्थिति को कैसे कैप्चर करते हैं
  2. क्लोज़र से निजी वेरिएबल
  3. मॉड्यूल पैटर्न (IIFE)
  4. फ़ैक्टरी फ़ंक्शन
← JavaScript Academy पर वापस जाएँ