Values and References – Variables व References जिस तरह से अलग-अलग तरीके से Memory में Store होते हैं उसी तरह से जब हम उनकी Values को किसी दूसरे Variable में Copy करते हैं, यानी किसी दूसरे Variable में Assign करते हैं, तब उनमें Stored Values भी अलग-अलग तरह से Behave करती हैं।
जब हम किसी Variable की Value को किसी दूसरे Variable में Assign करते हैं, तब पहले Variable की Value दूसरे Variable में Copy हो जाती है। जैसे-
[code] var num1 = 5; var num2 = num1; [/code]
यहां num1 में Value 5 है। जब हम num2 को num1 की Value से Initialize करते हैं, तब num2 में भी Value 5 हो जाता है। यानी दोनों Variables में दो Separate Values Store होती हैं। यदि हम num1 की Value Change भी कर दें, तब भी num2 की Value 5 ही रहती है। इस प्रक्रिया को निम्न चित्र द्वारा समझा जा सकता है:
जबकि किसी एक Object के Reference को जब हम किसी दूसरे Object में Assign करते हैं, तब उस स्थिति में भी ऊपर बता, अनुसार एक Variable का मान दूसरे Variable में Copy होता है।
लेकिन चूंकि एक Reference Variable में कोई Actual Value नहीं होती, बल्कि किसी Heap Area में Stored Object का Reference होता है, इसलिए वास्तव में उस दूसरे Variable में भी उस Object का Reference Assign हो जाता है, जिसे पहला Variable Refer कर रहा है। इस तरह से दोनों Variables समान Object को Reference करने लगते हैं। जैसे-
[/code] var obj1 = new Object(); var obj2 = obj1; obj1.name = “Manohar”; alert(obj2.name); //Output: Manohar [/code]
उपरोक्त Code में हमने एक Object Create किया है और उसका Address obj1 नाम के एक Variable को Initialize कर दिया है। फिर अगली Line में हमने फिर एक Variable obj2 Create किया है लेकिन इसमें Value के रूप में हमने obj1 को Initialize कर दिया है। फिर हमने obj1 के लिए एक name Property Create किया है और उसमें एक String “Manohar” को Assign किया है।
अन्त में चौथे Statement में हमने obj2 की name Property को Alert Box में Display करवाया है और ये Alert Box वही String Display कर रहा है, जिसे हमने obj1 की name Property में Assign किया था। obj2 के साथ तो हमने किसी Property को Specify नहीं किया था, फिर भी obj2 name Property की Value Return कर रहा है।
ऐसा इसलिए हो रहा है क्योंकि obj1 व obj2 दोनों ही समान Memory Object को Refer कर रहे हैं और दोनों के द्वारा हम समान Memory Location को ही Access कर रहे हैं।
इसलिए जिन Properties व Methods को obj1 के लिए Create किए जाएगा वे सभी obj2 के लिए भी Available हो जाऐंगे। इसी तरह से हम जिन Properties व Methods को obj2 के लिए Create करेंगे, वे सभी obj1 के लिए भी Available हो जाऐंगे। इस प्रक्रिया को हम निम्न चित्र द्वारा बेहतर तरीके से समझ सकते हैं:
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance JavaScript in Hindi | Page: 669 | Format: PDF