Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript इवेंट डेलिगेशन कैसे और क्यों उपयोग करें

JavaScript में इवेंट डेलिगेशन मेथड का क्या, क्यों और कैसे उपयोग करें, सीखें।

JavaScript इवेंट डेलिगेशन क्या है और आपको इसका उपयोग कब करना चाहिए?

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

आप देखेंगे कि यह एक पल में शक्तिशाली क्यों है।

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

आइए ऐसा करने के दो अलग-अलग तरीके देखते हैं।

प्रत्येक एलिमेंट में इवेंट लिसनर्स अटैच करें

सूची पर व्यक्तिगत एलिमेंट आइटम्स तक पहुंच प्राप्त करने का एक सामान्य तरीका है उन्हें लूप करना, जैसे for लूप के साथ। और फिर प्रत्येक एलिमेंट में इवेंट लिसनर्स अटैच करना:

let allExerciseItems = document.querySelectorAll(".exercise-item") for (let exerciseItem of allExerciseItems) { exerciseItem.addEventListener("click", function(event) { // टार्गेट चाइल्ड एलिमेंट के साथ कुछ करें event.target.classList.toggle("exercise-complete") }); }

उदाहरण

https://codepen.io/StrengthandFreedom/pen/KBZezV/

इवेंट डेलिगेशन से आइटम्स एक्सेस करें

इवेंट डेलिगेशन ऊपर देखे गए for लूप उदाहरण से पूरी तरह अलग है। प्रत्येक एलिमेंट के माध्यम से इटरेट (लूप) करने के बजाय जिसे हम एक्सेस करना चाहते हैं, हम बस पैरेंट एलिमेंट को टार्गेट करते हैं, जैसे:

// पैरेंट एलिमेंट प्राप्त करें, क्लिक इवेंट लिसनर जोड़ें document.querySelector(".exercise-list").addEventListener("click", function(event) { if(event.target.classList.contains('exercise-item')) { // टार्गेट चाइल्ड एलिमेंट के साथ कुछ करें event.target.classList.toggle('exercise-complete') } })

CodePen उदाहरण। नोट: classList.contains के बजाय आप एलिमेंट.matches API matches() का उपयोग कर सकते हैं यदि आपको अधिक सेलेक्टर लचीलापन चाहिए।

जैसा कि आप देख सकते हैं, परिणाम बिल्कुल वही है। जब आप इस पर किसी भी अभ्यास एलिमेंट आइटम पर क्लिक करते हैं, तो वे exercise-complete क्लास को टॉगल करते हैं। जो अलग है वह है इस परिणाम को प्राप्त करने के लिए हमारे द्वारा उपयोग की गई मेथड।

तो आपको इवेंट हैंडलिंग + for लूप मेथड के बजाय इवेंट डेलिगेशन मेथड का उपयोग क्यों करना चाहिए?

आइए आगे इस पर चर्चा करें!

इवेंट डेलिगेशन और परफॉरमेंस

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

यदि आपके वेब UI में हर एलिमेंट में इवेंट लिसनर्स अटैच हैं, तो इस प्रकार का परिदृश्य जल्दी से हार्डवेयर इंटेंसिव बन सकता है।

वे सभी इवेंट लिसनर्स आपके यूज़र्स के CPU को हॉग कर सकते हैं। वे मेमोरी में बैठे फ़ंक्शन रेफरेंसेस की एक बड़ी मात्रा पैदा कर सकते हैं। इससे मेमोरी लीक और सामान्य परफॉरमेंस गिरावट हो सकती है।

मुझे GC (गार्बेज कलेक्शन) के बारे में ज्यादा जानकारी नहीं है। मुझे अधिकांशतः JavaScript (एक हाई-लेवल प्रोग्रामिंग लैंग्वेज) लिखने का सौभाग्य मिला है। लेकिन एक चीज जो मुझे पता है, वह यह है कि ब्राउज़र में GC कई अलग-अलग वेंडर ब्राउज़र्स (Chrome, FireFox आदि) के कारण अप्रत्याशित हो सकता है। और, निश्चित रूप से, अनगिनत डिवाइसेस (स्मार्टफोन्स, लैपटॉप्स आदि)।

गार्बेज कलेक्शन

संक्षेप में, गार्बेज कलेक्शन एक प्रकार का कंप्यूटर मेमोरी मैनेजमेंट है। एक गार्बेज कलेक्टर पुराने/अनुपयोगी कोड को हटाने की कोशिश करता है जो बस वहां बैठा होता है और आपके कंप्यूटर की मेमोरी को क्लॉग करता है। विभिन्न प्रोग्रामिंग लैंग्वेज और सिस्टम के लिए अनगिनत अलग-अलग गार्बेज कलेक्टर्स हैं।

हर चीज में इवेंट लिसनर्स अटैच होने से, जैसा कि आपने लूप उदाहरण में देखा, आपकी वेब ऐप को जितनी गार्बेज कलेक्शन की आवश्यकता होगी, वह बढ़ जाएगी। यह लगभग हमेशा परफॉरमेंस को कम करेगा।

जब आपके पास पैरेंट एलिमेंट पर एक सिंगल इवेंट लिसनर होता है जो अपने सभी चाइल्ड एलिमेंट्स पर क्लिक के लिए सुनता है, तो यह आमतौर पर हर एक चाइल्ड एलिमेंट में इवेंट लिसनर्स अटैच करने की तुलना में अधिक परफॉर्मेंट होता है।

  1. विंडोज सैंडबॉक्स: सुरक्षित सॉफ्टवेयर परीक्षण के लिए सुरक्षित, त्वरित अलगाव विंडोज सैंडबॉक्स: सुरक्षित सॉफ्टवेयर परीक्षण के लिए सुरक्षित, त्वरित अलगाव

    विंडोज 10 के मई 2019 अपडेट (बिल्ड 1903) में एक दिलचस्प नई सुविधा शामिल है। हालांकि यह अधिक अनुभवी उपयोगकर्ताओं के लिए लक्षित है, यह कई सामान्य कार्यों की सुरक्षा में भी सुधार कर सकता है। विंडोज सैंडबॉक्स नामक यह सुविधा आपको सेकंड के भीतर एक अलग विंडोज वातावरण को चालू करने में सक्षम बनाती है, जो आपकी

  1. Safari के निजी ब्राउज़िंग में महारत: यह क्यों मायने रखता है और इसका उपयोग कैसे करें Safari के निजी ब्राउज़िंग में महारत: यह क्यों मायने रखता है और इसका उपयोग कैसे करें

    इन दिनों हर वेब ब्राउज़र की तरह, macOS X के लिए डिफ़ॉल्ट वेब ब्राउज़र Safari भी उन्नत हो गया है। यह सुरक्षित है और एक ही समय में कई टैब संभालने के लिए तैयार है। लेकिन अगर हम निजी ब्राउज़िंग की बात करें, तो यह निजी ब्राउज़िंग मोड से भी लैस है जो आपको गुप्त रूप से ब्राउज़ करने में मदद करता है। Mac पर

  1. उत्पादकता अनलॉक करें: पर्सनल रिमाइंडर ऐप का उपयोग क्यों और कैसे करें उत्पादकता अनलॉक करें: पर्सनल रिमाइंडर ऐप का उपयोग क्यों और कैसे करें

    हे भगवान! मैं पूरी तरह भूल गया। मैं दिन में कम से कम एक-दो बार उपरोक्त कथन का उपयोग करता हूं क्योंकि मैं चीजें भूलता रहता हूं। अब मुझे पता है कि मेरे मस्तिष्क या स्वास्थ्य में कुछ भी गलत नहीं है और यह भूलने की बीमारी आज दुनिया के तेज गति से चलने के कारण है। करने के लिए बहुत कुछ है, मिलने के लिए बहुत