Execution Context in JavaScript: यानी जब हम हमारे JavaScript Program में कोई ऐसा Object, Variable या Function Create करते हैं, जो कि Current Web Page के किसी भी हिस्से के लिए Accessible रहता है, तो इस प्रकार के Variable, Object या Function को Global Variable, Global Object या Global Function कहा जा सकता है और इस प्रकार के सभी Variables, Objects व Functions, window Object की Properties व Methods की तरह window Object से Associate हो जाते हैं। उदाहरण के लिए JavaScript में जब भी हम कोई Variable Create करना चाहते हैं, तो हम var Keyword का प्रयोग करते हुए निम्न Statement Use करते हैं:
var age = 31;
यदि हम किसी Variable को किसी Function या Object की Body के अन्दर Declare करने के अलावा, पूरी JavaScript File में कहीं भी Declare करते हैं, तो वह Variable एक प्रकार से Global Variable की तरह Declare होता है, जिसे Current Web Page में कहीं भी उपयोग में लिया जा सकता है।
वह Global Variable, Current Web Page के किसी भी हिस्से में लिखे गए JavaScript Code के लिए उपलब्ध रहता है, क्योंकि वास्तव में वह Global Variable हमेंशा window Object की Property बन जाता है। इसलिए जब तक Current Window Memory में Loaded रहता है तब तक वह Variable भी Window में Loaded Current Web Page के लिए Globally Available रहता है।
चूंकि एक Object वास्तव में Properties व Methods का Encapsulated Unit होता है, इसलिए Object की Property व Method को Use करने के लिए हमें Dot ( . ) Operator को Use करना पडता है।
ठीक इसी प्रकार से window भी एक Object है और यदि हम ये जानना चाहते हैं कि उपरोक्त Statement के माध्यम से हमारे द्वारा Create किया गया age नाम का Variable, window Object की Property बना या नहीं, तो इस बात की जानकारी प्राप्त करने के लिए हम window Object के साथ Dot Operator का प्रयोग करते हुए age नाम के Variable को Specify कर सकते हैं। यानी हम window.age Statement को console.log() में Specify करके इस बात का पता लगा सकते हैं कि window Object की age Property में कोई मान है या नहीं
यदि age नाम का Variable वास्तव में window Object की Property बना होगा, तो उसमें Stored मान console.log() Statement द्वारा Output में Display हो जाएगा, लेकिन यदि ऐसा नहीं हुआ होगा, तो console.log() Method Output के रूप में “undefined” शब्द Display करेगा, जो इस बात का Signal होता है कि हम window Object की किसी ऐसी Property को Access करने की कोशिश कर रहे हैं, जो कि Exist नहीं है। Global Scope की इस Functionality को समझने के लिए हम Firebug Console में निम्न Code लिख सकते हैं:
उपरोक्त चित्र में हमने सबसे पहले console.log(window.age); Statement लिखकर ये जानने की कोशिश की है कि age नाम की Property पहले से window Object के लिए Available है या नहीं। और जैसाकि आप देख सकते हैं कि इस Statement के Run होने पर हमें Return Value के रूप में “undefined” मान प्राप्त होता है, जो इस बात का Signal है कि window Object के लिए age नाम की Property पहले से Exist नहीं है।
फिर हमने var age = 31; Statement द्वारा age नाम का एक नया Variable Create किया है। चूंकि age नाम का Variable भी पहले से Exist नहीं है, इसलिए ये Statement Execute होने के बाद भी हमें Return Value के रूप में “undefined” मान प्राप्त होता है।
अन्त में हमने फिर से console.log(window.age); Statement लिखकर ये जानने की कोशिश की है कि age नाम की Property पहले से window Object के लिए Available है या नहीं। और जैसाकि आप देख सकते हैं कि इस बार हमें Output के रूप में मान 31 प्राप्त हो रहा है, जो age नाम के हमारे द्वारा Create किए गए Variable का मान है।
इस मान का Return होना इसी बात को Indicate कर रहा है कि अब age नाम का Variable, window Object की Property बन गया है। अन्यथा ये Statement Execute होने पर हमें फिर से “undefined” मान प्राप्त होता।
इस प्रकार से ये बात साबित होती है कि हम JavaScript में जितने भी Variables, Objects व Functions Create करते हैं, वे सभी window Object की Properties व Methods बनते हैं और Web Browser में Currently Loaded Web Page के लिए Globally Available रहते हैं।
ऐसा नहीं है कि हम जिन भी Variables, Objects या Functions को Create करते हैं, उन सभी को window.propertyName या window.methodName Statement द्वारा ही Access कर सकते हैं। यदि हम चाहें तो age नाम के Variable को निम्नानुसार बिना window Object Specify किए हुए भी Use कर सकते हैं:
जैसाकि आप उपरोक्त चित्र में आप देख सकते हैं कि यदि हम console.log(age); Statement Use करते हैं, तो बिना window Object को Specify किए हुए भी हम age नाम के Variable की Value को प्राप्त कर सकते हैं।
ऐसा इसलिए होता है, क्योंकि window Object एक Global Object को Represent करता है और Global Scope के सभी Variables, Properties व Methods पूरे JavaScript Program में Available रहते हैं। इसीलिए हम age नाम के Variable को Directly भी Access कर सकते हैं और window Object की Property के रूप में भी Access कर सकते हैं।
ध्यान रखने वाली बात ये है कि JavaScript के कई ऐसे Objects हैं जो Global होते हैं, जैसे location, navigator, history, screen, document आदि। लेकिन वास्तव में ये सभी window Object की Properties हैं, जिनके बारे में हम आगे विस्तार से जानेंगे।
जैसाकि हमने पहले भी कहा कि विभिन्न Companies ने अपने BOM को अलग-अलग तरीकों से Develop किया है, इसलिए सभी Web Browsers एक समान काम नहीं करते। अत: Windows Mobile के लिए Develop किया गया Internet Explorer Web Browser अपने window Object के साथ window.property = value; Statement द्वारा किसी नए Property या Method को Directly Create करने की सुविधा नहीं देता। हालांकि Globally Declare किए जाने वाले सभी Variables व Functions, इसमें भी window Object की Properties व Methods बन जाते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance JavaScript in Hindi | Page: 669 | Format: PDF