जावास्क्रिप्ट में यह कीवर्ड अगर समझ में न आए तो काफी पेचीदा हो सकता है। यह उन चीजों में से एक है जिसे अनुभवी डेवलपर्स के लिए भी आसानी से समझ पाना मुश्किल होता है लेकिन एक बार जब आप ऐसा कर लेते हैं, तो यह आपका काफी समय बचा सकता है।
इस लेख में, हम देखेंगे कि यह क्या है, यह विभिन्न स्थितियों में कैसे काम करता है और इसका उपयोग करते समय आपको सामान्य गलतियाँ नहीं करनी चाहिए।
यह केवल उस ऑब्जेक्ट को संदर्भित करता है जिसका उपयोग वर्तमान में जावास्क्रिप्ट कोड में किया जा रहा है। लेकिन यहां पेचीदा हिस्सा है: इसका संदर्भ क्या है, यह इस बात पर निर्भर करता है कि आप इसे अपने कोड में कहां और कैसे उपयोग करते हैं, यह भी बदल सकता है। कोई पूछ सकता है "ऐसा क्यों है?" खैर, यह प्रकृति में गतिशील है =, जिसका अर्थ है कि - इसका मान तब निर्धारित होता है जब किसी फ़ंक्शन को कॉल किया जाता है, न कि जब इसे लिखा जाता है।
जब आप इसे वैश्विक संदर्भ में उपयोग करते हैं, तो यह अक्सर एक वैश्विक वस्तु को संदर्भित करता है, जो बिल्कुल समझ में आता है, है ना? इसलिए, यदि आप इसे अपने ब्राउज़र के कंसोल में टाइप करते हैं, तो यह विंडो की ओर इंगित करेगा।
हालांकि जब किसी फ़ंक्शन के अंदर उपयोग किया जाता है, तो यह काफी अलग तरीके से व्यवहार करता है। उदाहरण के लिए: यदि आप उदाहरण के लिए किसी फ़ंक्शन को "myFunction" कहते हैं, तो यह अभी भी वैश्विक ऑब्जेक्ट को इंगित करेगा लेकिन यदि आप जावास्क्रिप्ट में सख्त मोड का उपयोग करते हैं, तो यह उस फ़ंक्शन के अंदर इसे अपरिभाषित कर देगा।
हाँ, मुझे पता है कि यह काफी भ्रमित करने वाला है, बस आगे बढ़ें। मैं बेहतर समझाऊंगा।
जब आप इसे किसी विधि (एक फ़ंक्शन जो किसी ऑब्जेक्ट की संपत्ति है) के अंदर उपयोग करते हैं, तो यह उस ऑब्जेक्ट को संदर्भित करता है जिससे विधि संबंधित है।
उदाहरण:
const myObject = { name: 'Alice', greet: function() { console.log(this.name); } }; myObject.greet(); // Output: 'Alice'
यहां, यह.नाम myObject.name को संदर्भित करता है, जो 'ऐलिस' है।
कंस्ट्रक्टर्स: जब आप किसी कंस्ट्रक्टर फ़ंक्शन या क्लास का उपयोग करके एक ऑब्जेक्ट बनाते हैं, तो यह बनाए जा रहे नए ऑब्जेक्ट को संदर्भित करता है।
उदाहरण:
function Person(name) { this.name = name; } const person1 = new Person('Bob'); console.log(person1.name); // Output: 'Bob'
कोड में, this.name नए व्यक्ति ऑब्जेक्ट की नाम संपत्ति को संदर्भित करता है।
इसकी एक सामान्य गलती कॉलबैक या ईवेंट हैंडलर में इसका सही मान खोना है। उदाहरण के लिए, यदि आप किसी ऑब्जेक्ट से किसी विधि को कॉलबैक के रूप में पास करते हैं, तो यह अब ऑब्जेक्ट को संदर्भित नहीं कर सकता है।
समाधान: इससे बचने के लिए, आप इसे सही ऑब्जेक्ट की ओर इंगित करने के लिए एरो फ़ंक्शन या बाइंड का उपयोग कर सकते हैं।
const myObject = { name: 'Eve', greet: function() { setTimeout(() => { console.log(this.name); }, 1000); } }; myObject.greet(); // Output: 'Eve'
यह कीवर्ड परेशानी भरा हो सकता है, लेकिन आपको बस इतना ध्यान रखना है कि यह इस बात पर निर्भर करता है कि आप इसे कैसे और कहां कॉल करना चुनते हैं। इसमें बेहतर होने के लिए, ढेर सारे उदाहरणों के साथ इसका अभ्यास करें और बिना समय गंवाए आप इसमें माहिर हो जाएंगे।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3