जावास्क्रिप्ट में फ़ंक्शन अलियासिंग का पता लगाने के प्रयास में, एक उपयोगकर्ता को उपनाम विधि प्राप्त करने में कठिनाइयों का सामना करना पड़ा ठीक से काम करना. उन्होंने फ़ायरफ़ॉक्स, क्रोम और IE8 सहित कई ब्राउज़रों में इस व्यवहार को देखा, और आश्चर्य किया कि क्या वे कोई त्रुटि कर रहे थे या यदि समस्या अधिक व्यापक थी।
पता करने के लिए इस मुद्दे पर, यह समझना महत्वपूर्ण है कि जावास्क्रिप्ट कैसे कार्य करता है और ऑब्जेक्ट कैसे संचालित होते हैं। जब एक जावास्क्रिप्ट फ़ंक्शन लागू किया जाता है, तो जावास्क्रिप्ट दुभाषिया एक दायरा निर्धारित करता है और इसे फ़ंक्शन में भेजता है। यदि लागू पद्धति का उपयोग करके कोई दायरा स्पष्ट रूप से परिभाषित नहीं किया गया है, तो वैश्विक विंडो ऑब्जेक्ट फ़ंक्शन के लिए दायरे के रूप में कार्य करता है।
किसी फ़ंक्शन के मामले में, जैसे कि sum(a, b), जो इसका उपयोग नहीं करता है यह कीवर्ड, इसका मान महत्वपूर्ण नहीं है. हालाँकि, ऐसे कार्यों के लिए जो इसका संदर्भ देते हैं, जैसे कि व्यक्ति (जन्मतिथि), इसका मूल्य महत्वपूर्ण हो जाता है। अप्लाई का उपयोग करके स्कोप को मैन्युअल रूप से सेट करके, जावास्क्रिप्ट के डिफ़ॉल्ट स्कोपिंग को ओवरराइड करना संभव है। var $ = document.getElementById के रूप में, उपनामित फ़ंक्शन का दायरा महत्वपूर्ण हो जाता है। यदि मूल फ़ंक्शन इस कीवर्ड से किसी विशिष्ट ऑब्जेक्ट (जैसे कि getElementById के मामले में दस्तावेज़) को संदर्भित करने की अपेक्षा करता है, तो अलियासिंग समस्याएँ पैदा कर सकता है।
समस्या का समाधान: एक नज़दीकी नज़र
document.getElementById के मामले में इस समस्या को हल करने के लिए, एक समाधान $.apply(document, [) को कॉल करना है। 'someElement']), स्पष्ट रूप से उपनामित फ़ंक्शन के लिए सही दायरा निर्धारित करता है।
एक विस्तृत उदाहरण: व्यक्ति फ़ंक्शन
आगे स्पष्ट करने के लिए फ़ंक्शन स्कोपिंग और अलियासिंग की बारीकियों के लिए, एक जटिल उदाहरण प्रदान किया गया है: पर्सन फ़ंक्शन, जिसमें विभिन्न स्कोपिंग व्यवहारों के साथ कई गेटएज विधियां शामिल हैं। उदाहरण फ़ंक्शन संदर्भों के साथ काम करते समय इच्छित दायरे पर सावधानीपूर्वक विचार करने के महत्व को दर्शाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3