जावास्क्रिप्ट ओओपी (प्रोटोटाइप) #2

Nov 27 2022
हाय दोस्तों, मैं बेनिसन हूं, इस ब्लॉग में, मैं यह समझाने जा रहा हूं कि ओओपी जावास्क्रिप्ट में कैसे काम करता है, और समझाता हूं कि यह क्लासिकल ओओपी से कैसे अलग है। इस लेख को पढ़ने से पहले, कृपया मेरा पिछला ब्लॉग पढ़ें जो OOP के मूलभूत सिद्धांतों के बारे में है।
जावास्क्रिप्ट ओओपी भाग II

हाय दोस्तों, मैं बेनिसन हूं, इस ब्लॉग में, मैं यह समझाने जा रहा हूं कि ओओपी जावास्क्रिप्ट में कैसे काम करता है, और समझाता हूं कि यह क्लासिकल ओओपी से कैसे अलग है। इस लेख को पढ़ने से पहले, कृपया मेरा पिछला ब्लॉग पढ़ें जो OOP के मूल सिद्धांतों के बारे में है ।

एक प्रोटोटाइप क्या है?

  • जावास्क्रिप्ट में हमारे पास प्रोटोटाइप नामक कुछ है, जावास्क्रिप्ट में, प्रत्येक वस्तु एक निश्चित प्रोटोटाइप से जुड़ी होगी। इसलिए प्रत्येक वस्तु के प्रोटोटाइप होते हैं। प्रोटोटाइप में गुण और विधियाँ भी होती हैं।
  • यहां महत्वपूर्ण बात यह है कि प्रोटोटाइप विधियों और गुणों को ऑब्जेक्ट द्वारा एक्सेस किया जा सकता है।
  • क्लासिकल ओओपी बनाम जावास्क्रिप्ट ओओपी
  • क्लासिकल OOP में किसी ऑब्जेक्ट को क्लास से इंस्टैंट किया जाता है, जिसे इंस्टेंटेशन कहा जाता है। यहां क्लास ऑब्जेक्ट बनाने के लिए सिर्फ एक ब्लूप्रिंट है।
  • लेकिन जावास्क्रिप्ट में, यह शब्दावली बिल्कुल अलग है। यहां प्रत्येक वस्तु अन्य वस्तुओं से जुड़ी होती है , और उन वस्तुओं को प्रोटोटाइप कहा जाता है ।
  • प्रोटोटाइप इनहेरिटेंस का अर्थ है एक प्रोटोटाइप जिसमें विधियाँ और प्रोटोटाइप होते हैं जो उस प्रोटोटाइप से जुड़ी सभी वस्तुओं के लिए सुलभ होते हैं।
  • तो वस्तु प्रोटोटाइप से विधियों और गुणों को प्राप्त करती है, इस प्रकार इसे प्रोटोटाइप वंशानुक्रम कहा जाता है। यह वंशानुक्रम वर्ग वंशानुक्रम से भिन्न है जो एक वर्ग को दूसरे वर्ग से विरासत में मिला है। लेकिन इस मामले में, बेस क्लास से विरासत में मिला उदाहरण।
  • उपरोक्त छवि में, जावास्क्रिप्ट में OOP तीर ऊपर की ओर इशारा कर रहा है, इसका मतलब है कि वस्तु अपने व्यवहार को प्रोटोटाइप में दर्शाती है।
  • शास्त्रीय ओओपी में, विधियों को कक्षा से उदाहरणों (वस्तुओं) में कॉपी किया जाता है।
  • const numbers = [1, 2, 3, 4,5];
    numbers.map((num) => num * 2)
    

  • यदि हम जावास्क्रिप्ट मानचित्र विधि को समझने के लिए Google ब्राउज़ करते हैं, तो MDN दस्तावेज़ में हम देख सकते हैं कि जैसे Array.prototype.map()
  • यहां " ऐरे.प्रोटोटाइप ()" सभी सरणी वस्तुओं के लिए प्रोटोटाइप है जो हम जावास्क्रिप्ट में बनाते हैं। इसलिए सभी सरणियों की मानचित्र विधि तक पहुंच है।
  • अब, इस प्रोटोटाइप ऑब्जेक्ट में मानचित्र सहित सभी सरणी विधियाँ शामिल हैं।
  • तो, उपरोक्त उदाहरण में, " ऐरे.प्रोटोटाइप" संख्या सरणी का प्रोटोटाइप है, वह संख्या सरणी चर प्रोटोटाइप से जुड़ा हुआ है। इसलिए इसकी उन सभी विधियों तक पहुंच है जो " सरणी.प्रोटोटाइप " ऑब्जेक्ट पर परिभाषित हैं। तो उपरोक्त उदाहरण में सरणी "संख्या" विधि मानचित्र को प्राप्त करती है।
  • जावास्क्रिप्ट में, हम प्रोटोटाइप इनहेरिटेंस को तीन तरह से लागू कर सकते हैं, एक कंस्ट्रक्टर फंक्शन है, दूसरा ES6 क्लासेस है, और अंतिम एक Object.Create() मेथड है।
  • कन्स्ट्रक्टर फ़ंक्शन का उपयोग फ़ंक्शंस से ऑब्जेक्ट बनाने के लिए किया जाता है। इस तरह बिल्ट-इन ऑब्जेक्ट्स जैसे ऐरे और मैप मेथड्स को लागू किया जाता है।
  • यह कन्स्ट्रक्टर कार्यों का एक आधुनिक विकल्प है। ES6 क्लासेस कंस्ट्रक्टर फंक्शन की तरह ही काम करती हैं। ES6 क्लास क्लासिकल OOP की तरह व्यवहार नहीं करती है। पर्दे के पीछे, ES6 कक्षाएं कंस्ट्रक्टर फ़ंक्शन के साथ कार्यान्वित की जाती हैं।
  • class User {
      constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
      }
      getFullName() {
        console.log(this.firstName + ' ' + this.lastName);
      }
    }
    
    const user = new User('Bennison', 'J');
    
    console.log(user); // { firstName: 'Bennison', lastName: 'J' }
    
    console.log(user.hasOwnProperty('firstName')); // true
    console.log(user.hasOwnProperty('getFullName')); // false
    

  • और उपरोक्त उदाहरण में हम 'hasOwnProperty' विधि देख सकते हैं, जो हमें संपत्ति की जाँच करने में मदद करती है, और विधि वस्तु की अपनी संपत्ति है जिसे hasOwnProperty विधि कहा जाता है।
  • किसी ऑब्जेक्ट को प्रोटोटाइप ऑब्जेक्ट से जोड़ने के लिए "ऑब्जेक्ट.क्रिएट ()" विधि सबसे आसान तरीका है
  • const objOne = {
      firstName: 'Bennison',
      lastName: 'J',
      getFullName: function () {
        console.log(this.firstName + ' ' + this.lastName);
      }
    };
    
    const objTwo = Object.create(objOne);
    
    console.log(objTwo); // {}
    objTwo.getFullName(); //  Bennison J
    

  • "ऑब्जेक्ट.क्रिएट" विधि प्रोटोटाइप के साथ एक खाली वस्तु लौटाती है। और प्रोटोटाइप वही होगा जो हमने उस पद्धति को दिया था।
  • मुझे उम्मीद है, इस ब्लॉग में, हमने जावास्क्रिप्ट में प्रोटोटाइप इनहेरिटेंस की मूल बातें सीखी हैं, यदि आप उपरोक्त उदाहरणों को नहीं समझ पाए हैं, तो चिंता न करें, मैं अपने आने वाले ब्लॉगों में इन अवधारणाओं के बारे में अधिक समझाऊंगा। इस ब्लॉग को पढ़ने के लिए धन्यवाद, जल्द मिलते हैं।