जावास्क्रिप्ट एक स्थापित भाषा है लेकिन इसने केवल ES6 में क्लासिक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) के लिए समर्थन जोड़ा है। जब तक इसमें क्लास डिक्लेरेशन जैसी विशेषताएं नहीं जोड़ी गईं, तब तक जावास्क्रिप्ट ने कम-ज्ञात प्रोटोटाइप-आधारित प्रतिमान का उपयोग करके OOP को हैंडल किया। हालाँकि, किसी भी दृष्टिकोण से, आप जटिल अनुप्रयोग बना सकते हैं जो ऑब्जेक्ट-आधारित सुविधाओं का उपयोग करते हैं।

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

जावास्क्रिप्ट में एक निर्माता क्या है?

कंस्ट्रक्टर्स में से एक हैं वस्तु-उन्मुख प्रोग्रामिंग में मूलभूत अवधारणाएँ. कन्स्ट्रक्टर एक ऐसा फ़ंक्शन है जिसका उपयोग आप किसी ऑब्जेक्ट का उदाहरण बनाने के लिए कर सकते हैं। एक नई वस्तु बनाने के साथ ही, एक कंस्ट्रक्टर उन गुणों और व्यवहारों को निर्दिष्ट करता है जो उससे संबंधित होंगे।

कंस्ट्रक्टर सिंटैक्स

समारोहNameOfConstructor() {
यह संपत्ति 1 = "संपत्ति1";
यह संपत्ति 2 = "संपत्ति 2";
यह संपत्ति 3 = "संपत्ति3";
}
instagram viewer

आप के साथ एक कंस्ट्रक्टर बना सकते हैं समारोह कीवर्ड क्योंकि यह अनिवार्य रूप से है किसी अन्य समारोह की तरह. हालाँकि, निर्माता निम्नलिखित सम्मेलनों का पालन करते हैं:

  1. उन्हें अन्य कार्यों से अलग करने के लिए, अपने कन्स्ट्रक्टर के लिए एक नाम का उपयोग करें जो बड़े अक्षर से शुरू होता है।
  2. कंस्ट्रक्टर उपयोग करते हैं यह कीवर्ड अलग। एक कंस्ट्रक्टर के अंदर, यह कन्स्ट्रक्टर द्वारा बनाई गई नई वस्तु को संदर्भित करता है।
  3. JavaScript फ़ंक्शंस के विपरीत, कंस्ट्रक्टर मान लौटाने के बजाय गुणों और व्यवहारों को परिभाषित करते हैं।

नए ऑब्जेक्ट बनाने के लिए कंस्ट्रक्टर का उपयोग करना

जावास्क्रिप्ट में, ऑब्जेक्ट बनाने के लिए कंस्ट्रक्टर का उपयोग करना एक आसान काम है। इसके बाद एक आमंत्रण के साथ यहां एक साधारण कन्स्ट्रक्टर है:

समारोहविद्यार्थी() {
यह नाम = "ग्लोरिया";
यह लिंग = "महिला";
यहआयु = 19;
}

होने देना छात्रा = नया विद्यार्थी();

इस उदाहरण में, छात्रा से निर्मित वस्तु है विद्यार्थी निर्माता। उपयोग नया फ़ंक्शन को कन्स्ट्रक्टर के रूप में कॉल करने के लिए कीवर्ड। यह कीवर्ड जावास्क्रिप्ट को एक नया उदाहरण बनाने के लिए कहता है विद्यार्थी. आपको इस फ़ंक्शन को इसके बिना कॉल नहीं करना चाहिए नया कीवर्ड क्योंकि यह कन्स्ट्रक्टर के अंदर एक नई वस्तु को इंगित नहीं करेगा। निर्माण के बाद, छात्रा के सभी गुण हैं विद्यार्थी. आप इन गुणों को वैसे ही एक्सेस और संशोधित कर सकते हैं जैसे आप किसी अन्य ऑब्जेक्ट के साथ करते हैं।

जावास्क्रिप्ट कंस्ट्रक्टर्स के बारे में जानने योग्य महत्वपूर्ण बातें

कंस्ट्रक्टर्स के साथ काम करना इतना थका देने वाला हो सकता है, और साथ ही, यह एक आसान काम हो सकता है। यहां कुछ महत्वपूर्ण बातें हैं जो किसी भी डेवलपर को कंस्ट्रक्टर के साथ काम करने के बारे में जाननी चाहिए।

तर्कों के साथ कंस्ट्रक्टर्स का उपयोग करना

आप तर्क प्राप्त करने के लिए एक कंस्ट्रक्टर का विस्तार कर सकते हैं। यदि आप उत्तरदायी, लचीला कोड लिखना चाहते हैं तो यह बहुत महत्वपूर्ण है।

जब भी आप किसी कंस्ट्रक्टर से कोई ऑब्जेक्ट बनाते हैं, तो ऑब्जेक्ट कंस्ट्रक्टर में घोषित सभी गुणों को इनहेरिट करेगा। उदाहरण के लिए, द छात्रा आपने ऊपर बनाया गुण होंगे नाम, लिंग, और आयु निश्चित प्रारंभिक मूल्यों के साथ। जबकि आप प्रत्येक संपत्ति को मैन्युअल रूप से बदल सकते हैं, यदि आप कई वस्तुओं का उपयोग करके प्रोग्राम लिख रहे थे तो यह बहुत काम आएगा।

सौभाग्य से, जावास्क्रिप्ट निर्माता किसी अन्य फ़ंक्शन की तरह पैरामीटर स्वीकार कर सकते हैं। आप बदल सकते हैं विद्यार्थी कंस्ट्रक्टर दो मापदंडों को स्वीकार करने के लिए:

समारोहविद्यार्थी(नाम / लिंग) {
यहनाम = नाम;
यहलिंग = लिंग;
यहआयु = 19;
}

उपरोक्त से निर्मित सभी वस्तुओं में होगा आयु करने के लिए सेट 19. आप अपने कंस्ट्रक्टर को इस तरह से डिज़ाइन कर सकते हैं यदि कोई ऐसी संपत्ति है जिसे आप चाहते हैं कि सभी ऑब्जेक्ट हों।

अब आप अलग-अलग तर्कों में पास करके एक ही कंस्ट्रक्टर से अद्वितीय वस्तुओं को परिभाषित कर सकते हैं।

तर्क कंस्ट्रक्टर को अधिक लचीला बनाते हैं। वे समय बचाते हैं और स्वच्छ कोड को प्रोत्साहित करते हैं।

वस्तु विधियों को परिभाषित करना

एक विधि एक वस्तु गुण है जो एक कार्य है। तरीके OOP में आपके कोड को बढ़ाते हैं क्योंकि यह आपकी वस्तुओं में विभिन्न व्यवहार जोड़ता है। यहाँ एक उदाहरण है:

समारोहविद्यार्थी(नाम / लिंग) {
यहनाम = नाम;
यहलिंग = लिंग;
यहआयु = 19 ;

यह.कहना नाम = समारोह () {
वापस करना'मेरा नाम है ${नाम}`;
}
}

उपरोक्त फ़ंक्शन जोड़ता है SayName निर्माणकर्ता को।

मान लीजिए कि आप इस कंस्ट्रक्टर का उपयोग एक ऑब्जेक्ट बनाने के लिए करते हैं जिसे आप एक वेरिएबल में स्टोर करते हैं, छात्रा. फिर आप इस फ़ंक्शन को नीचे दिए गए कोड से कॉल कर सकते हैं:

छात्रानाम()

प्राथमिक अवस्था

पहले हमने बनाया था विद्यार्थी एक तरह से कि इसके सभी उदाहरणों में एक होगा आयु संपत्ति के मूल्य के साथ 19. इसके परिणामस्वरूप प्रत्येक के लिए एक डुप्लिकेट चर होगा विद्यार्थी उदाहरण आप बनाते हैं।

इस दोहराव से बचने के लिए, जावास्क्रिप्ट प्रोटोटाइप की अवधारणा का उपयोग करता है। कंस्ट्रक्टर से बनाई गई सभी वस्तुएं इसके प्रोटोटाइप के गुणों को साझा करती हैं। आप जोड़ सकते हैं आयु संपत्ति को विद्यार्थी प्रोटोटाइप जैसा कि नीचे दिखाया गया है:

छात्र.प्रोटोटाइप.आयु = 19;

ऐसा करने से, के सभी उदाहरण विद्यार्थी के पास होगा आयु संपत्ति। घोषणा प्रोटोटाइप गुण आपके आवेदन में डुप्लिकेट कोड को कम करने का एक तरीका है। यह आपके कोड को यथासंभव मानक बनाता है।

एक प्रोटोटाइप संपत्ति एक वस्तु हो सकती है

जैसा कि ऊपर बताया गया है, आप व्यक्तिगत रूप से प्रोटोटाइप गुण जोड़ सकते हैं। लेकिन अगर आपके पास जोड़ने के लिए कई गुण हैं, तो यह असुविधाजनक हो सकता है।

एक विकल्प के रूप में, आप एक नई वस्तु में आवश्यक सभी गुणों को शामिल कर सकते हैं। ऐसा करने से, आप एक ही बार में सभी गुण सेट कर देंगे। उदाहरण के लिए:

छात्र.प्रोटोटाइप = {
आयु: 19,
जाति: "सफ़ेद",
विकलांगता: "कोई नहीं"
}

सेट करना याद रखें निर्माता संपत्ति जब एक नई वस्तु के लिए प्रोटोटाइप सेट करती है।

छात्र.प्रोटोटाइप = { 
निर्माता: विद्यार्थी,
आयु: 19,
जाति: "सफ़ेद",
विकलांगता: "कोई नहीं"
}

आप इस संपत्ति का उपयोग यह जांचने के लिए कर सकते हैं कि किस कन्स्ट्रक्टर फ़ंक्शन ने एक उदाहरण बनाया है।

सुपरटेप्स और विरासत

विरासत एक विधि है जिसे प्रोग्रामर अपने अनुप्रयोगों में त्रुटियों को कम करने के लिए नियोजित करते हैं। यह चिपके रहने का एक तरीका है अपने आप को दोहराएं नहीं (DRY) सिद्धांत।

मान लीजिए आपके पास दो कंस्ट्रक्टर हैं-विद्यार्थी और अध्यापक—इसमें दो समान प्रोटोटाइप गुण हैं।

छात्र.प्रोटोटाइप = { 
निर्माता: विद्यार्थी,

कहो नाम: समारोह () {
वापस करना'मेरा नाम है ${नाम}`;
}
}

शिक्षक.प्रोटोटाइप = {
निर्माता: अध्यापक,

कहो नाम: समारोह () {
वापस करना'मेरा नाम है ${नाम}`;
}
}

ये दोनों कंस्ट्रक्टर परिभाषित करते हैं SayName विधि, समान रूप से। इस अनावश्यक दोहराव से बचने के लिए, आप एक बना सकते हैं supertype.

समारोहव्यक्तिगत विवरण(){};

व्यक्तिगत विवरण.प्रोटोटाइप = {
निर्माता: व्यक्तिगत विवरण,

कहो नाम: समारोह () {
वापस करना'मेरा नाम है ${नाम}`;
}
};

तब आप निकाल सकते हैं SayName दोनों कंस्ट्रक्टर्स से।

सुपरटाइप से गुण प्राप्त करने के लिए, उपयोग करें ऑब्जेक्ट.क्रिएट (). आप दोनों कंस्ट्रक्टरों के प्रोटोटाइप को सुपरटाइप के उदाहरण पर सेट करते हैं। इस मामले में, हम सेट करते हैं विद्यार्थी और अध्यापक व्यक्तिगत विवरण के उदाहरण के लिए प्रोटोटाइप।

यहाँ यह है:

छात्र.प्रोटोटाइप = वस्तु.क्रिएट (इंडिविजुअलडिटेल्स.प्रोटोटाइप);
शिक्षक.प्रोटोटाइप = वस्तु.क्रिएट (इंडिविजुअलडिटेल्स.प्रोटोटाइप);

ऐसा करने से, विद्यार्थी और अध्यापक सुपरटेप के सभी गुण प्राप्त करें, व्यक्तिगत विवरण.

सुपरटेप्स का उपयोग करके ओओपी में डीआरवाई का अभ्यास कैसे करें।

कंस्ट्रक्टर्स गेम चेंजर्स हैं

निर्माता जावास्क्रिप्ट का एक प्रमुख घटक हैं, और OOP जावास्क्रिप्ट अनुप्रयोगों के विकास के लिए उनकी कार्यक्षमता में महारत हासिल करना महत्वपूर्ण है। आप गुणों और विधियों को साझा करने वाली वस्तुओं को बनाने के लिए कंस्ट्रक्टर का उपयोग कर सकते हैं। आप वस्तु पदानुक्रम को परिभाषित करने के लिए वंशानुक्रम का भी उपयोग कर सकते हैं।

ES6 में, आप इसका उपयोग कर सकते हैं कक्षा कीवर्ड शास्त्रीय वस्तु-उन्मुख वर्गों को परिभाषित करने के लिए। जावास्क्रिप्ट का यह संस्करण भी समर्थन करता है निर्माता कीवर्ड।