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

जावास्क्रिप्ट this कीवर्ड समझाएं


परिचय

जावास्क्रिप्ट this कीवर्ड उस ऑब्जेक्ट को संदर्भित करता है जिससे यह संबंधित होता है। इसका मान इस बात पर निर्भर करता है कि इसे कहाँ और कैसे कॉल किया गया है:

  • अकेले या रेगुलर फ़ंक्शन में: ग्लोबल ऑब्जेक्ट (ब्राउज़र में window, स्ट्रिक्ट मोड में undefined)
  • मेथड में: ऑनर ऑब्जेक्ट
  • इवेंट लिस्टनर में: इवेंट प्राप्त करने वाला HTML एलिमेंट
  • call(), apply(), bind() के साथ: स्पष्ट रूप से सेट किया गया मान

उदाहरण

निम्न कोड जावास्क्रिप्ट this आइडेंटिफायर के लिए है:

<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>this कीवर्ड</title> <style> body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } .sample { font-size: 18px; font-weight: 500; color: red; } </style> </head> <body> <h1>जावास्क्रिप्ट this आइडेंटिफायर</h1> <div class="sample"></div> <div class="result"></div> <button class="Btn">यहाँ क्लिक करें</button> <h3> विभिन्न संदर्भों में 'this' किस ऑब्जेक्ट को संदर्भित करता है, देखने के लिए ऊपर दिए गए बटन पर क्लिक करें </h3> <script> const thisRef = this; // ग्लोबल स्कोप में this const sampleEle = document.querySelector(".sample"); function test() { return this; } const testObj = { a: 22, check() { return this; }, }; document.querySelector(".Btn").addEventListener("click", () => { sampleEle.innerHTML = "सामान्य फ़ंक्शन में this = " + test() + "<br>"; sampleEle.innerHTML += "मेथड में this = " + testObj.check() + "<br>"; sampleEle.innerHTML += "किसी स्कोप के बिना this = " + thisRef + "<br>"; }, false); </script> </body> </html>

आउटपुट

उपरोक्त कोड निम्न आउटपुट उत्पन्न करेगा:

जावास्क्रिप्ट this कीवर्ड समझाएं

'यहाँ क्लिक करें' बटन पर क्लिक करने पर:

जावास्क्रिप्ट this कीवर्ड समझाएं

this बाइंडिंग नियम (प्राथमिकता क्रम)

  1. New बाइंडिंग - new Fn() → this नया ऑब्जेक्ट है
  2. Explicit बाइंडिंग - call/apply/bind → this स्पष्ट आर्गुमेंट है
  3. Implicit बाइंडिंग - obj.method() → this ऑब्जेक्ट है
  4. Default बाइंडिंग - स्टैंडअलोन फ़ंक्शन → this ग्लोबल/undefined (स्ट्रिक्ट मोड)

एरो फ़ंक्शन्स

एरो फ़ंक्शन्स का अपना this नहीं होता - वे आसपास के लेक्सिकल स्कोप से this इनहेरिट करते हैं।

  1. JavaScript में शॉर्टहैंड फंक्शन्स (Arrow Functions) समझाएं JavaScript में शॉर्टहैंड फंक्शन्स (Arrow Functions) समझाएं

    एरो फंक्शन्स जिन्हें शॉर्टहैंड फंक्शन्स भी कहा जाता है, ES2015 में पेश किए गए थे और हमें फंक्शन को छोटे तरीके से लिखने की अनुमति देते हैं। उनका अपना this बाइंडिंग नहीं होता और वे आसपास के कॉन्टेक्स्ट से this प्राप्त करते हैं।JavaScript में शॉर्टहैंड फंक्शन्स दर्शाने का कोड:उदाहरण<!DOCTYPE html>

  1. जावास्क्रिप्ट में for...in स्टेटमेंट समझाया गया जावास्क्रिप्ट में for...in स्टेटमेंट समझाया गया

    for...in लूप ऑब्जेक्ट की सभी प्रॉपर्टीज के माध्यम से लूप करता है। जावास्क्रिप्ट में for..in स्टेटमेंट को लागू करने का कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0

  1. जावास्क्रिप्ट में ऑब्जेक्ट्स की समानता समझाएं जावास्क्रिप्ट में ऑब्जेक्ट्स की समानता समझाएं

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