Object Type Reference – एक Reference Value (Object) किसी Specific Reference Type का Instance होता है। ECMAScript में Reference Type, Group of Data व Functionalities का एक Structure होता है, जो सामान्यत: अन्य Programming Languages में Class के नाम से जाना जाता है।
लेकिन ECMAScript में इस Construct को Class नहीं कहा जाता, क्योंकि किसी भी Object Oriented Programming में Class व Interface जरूर होते हैं, जबकि ECMAScript में ये दोनों नहीं होते। इसलिए ECMAScript को पूरी तरह से Pure Object Oriented Programming Language नहीं कहा जा सकता।
ECMAScript के Reference Types को सामान्यत: Object Definitions कहा जाता है, क्योंकि ये किसी Object में हो सकने वाली Properties व Methods को Describe करते हैं। हालांकि Reference Types अन्य Languages की Class के समान महसूस हो सकता है, लेकिन दोनों Equivalent नहीं हैं।
JavaScript Objects हमेंशा किसी न किसी Particular Reference Type के Instance होते हैं। इसलिए नए Objects Create करने के लिए हमें new Operator के साथ उस Create होने वाले Reference Type के Constructor को Specify करना होता है, जिसका Instance हम Create करना चाहते हैं। उदाहरण के लिए –
[code] var person = new Object(); [/code]
ये Code Object Reference Type का एक Object Create करता है और Create होने वाले Object का Reference person नाम के Variable में Store कर देता है। यहां जो Constructor Use हो रहा है, वह Object() है, जो कि एक Simple Object Create करता है, जिसमें केवल Default Properties व Methods होते हैं। ECMAScript कई Native Reference Types Provide करता है, जिनका प्रयोग हम हमारी विभिन्न प्रकार की जरूरतों को पूरा करने के लिए कर सकते हैं।
Object Type
अभी तक हमने केवल Object Reference Type को Use किया है, जो कि ECMAScript में सबसे ज्यादा Use किया जाने वाला Reference Type होता है। हालांकि किसी Object के Instances में कोई ज्यादा Functionalities नहीं होती हैं, फिर भी वे किसी Data को Store करने व उस Data को Application के Around Transmit करने के लिए काफी उपयुक्त होते हैं।
किसी Object का Instance Create करने के दो तरीके होते हैं। पहले तरीके में हम new Operator के साथ Object Constructor का प्रयोग करते हैं। जैसे-
[code] var person = new Object(); person.name = "Rajesh"; person.age = 28; [/code]
जबकि Object Create करने का दूसरा तरीका Object Literal Notation कहलाता है। ये एक ऐसा तरीका है, जिसका प्रयोग करके हम किसी Object की विभिन्न Properties को सरल तरीके Define कर सकते हैं।
उदाहरण के लिए इस तरीके का प्रयोग करके हम उपरोक्त Code से Create होने वाले person Object के Equivalent ही Object Create कर सकते हैं, लेकिन ये तरीका Object Literal Notation का तरीका है।
[code] var person = { name : "Rajesh", age : 28 }; [/code]
इस तरह से Object Create करते समय Opening Curly Brace, Object Literal Notation की शुरूआत को Represent करता है जबकि Closing Curly Brace, Object Literal Notation के अन्त को Specify करता है।
इस तरह से Object का एक Block बन जाता है। फिर इस Block में हमें Object की सभी Properties व Values को एक Pair के रूप में Colon से Separate करते हुए Specify करना होता है।
यानी हर Property व Value को एक Pair के रूप में Specify करना होता है जबकि हर Property-Value Pair को Comma से Separate करते हुए हम एक Object की एक से ज्यादा Properties को एक साथ Specify कर सकते हैं। इस प्रकार से उपरोक्त तरीके से भी Exactly वही Object Create होता है, जो Just इससे पिछले तरीके से Create हुआ था।
Object Literal Notation में Property Names को हम एक String के रूप में भी Specify कर सकते हैं। यानी हम उपरोक्त Codes को निम्नानुसार भी Specify कर सकते हैं:
[code] var person = { "name" : "Rajesh", "age" : 28 }; [/code]
चूंकि Create होने वाले हर Object की अपनी कुछ Default Properties भी होती हैं, इसलिए यदि हम किसी Object को उसकी Default Properties के साथ ही Create करना चाहते हैं, तो हम ऐसा भी कर सकते हैं और जरूरत होने पर हम हमारी सुविधानुसार उस Object में अपनी स्वयं की Properties को भी Specify कर सकते हैं। जैसे-
[code] var person = { }; // Same as new Object() person.name : "Rajesh"; person.age : 28; [/code]
उपरोक्त Code द्वारा भी एक Object Create होता है, जिसका Reference person नाम के Variable में Store होता है। इस Reference का प्रयोग करके हम Dot Operator का प्रयोग करते हुए Create होने वाले Object में नई Properties को Add कर सकते हैं, जैसाकि उपरोक्त Code में person Object के लिए name व age Property को Specify किया गया है।
जब हम उपरोक्त तरीके से Object Create करते हैं, तब वास्तव में Object का Constructor कभी Call नहीं होता। हालांकि उपरोक्त दोनों ही तरीके Valid हैं, फिर भी Object Literal Notation को Priority देनी चाहिए, क्योंकि इसे Specify करना व समझना आसान होता है। साथ ही हम इस तरीके का प्रयोग करके किसी Function में बहुत सारे Optional Arguments Pass कर सकते हैं। जैसे-
[code] function displayInfo(args){ var output = ""; if(typeof args.name == "string") { output += "Name: " + args.name + "\n"; } if(typeof args.age == "number") { output += "Age: " + args.age + "\n"; } alert(output); } displayInfo({name:"Kuldeep", age: 30}); displayInfo({name:"Rajesh"}); [/code]
उपरोक्त Code में हमने displayInfo() Function को दो बार Call किया है और दोनों बार अलग-अलग संख्या में Arguments Pass किए हैं। पहली बार हमने Name व Age, दो Arguments Pass किए हैं, जबकि दूसरी बार केवल नाम Pass किया है।
चूंकि जिस तरह से हमने displayInfo()Function को Define किया है, ;ह Function args नाम का केवल एक Argument Accept करता है। Function Call करते समय इस Argument में name या age नाम की Properties को एक Object Literal Notation द्वारा ऐसे Object के रूप में Specify किया जा सकता है, जिसका कोई नाम न हो। जिस Object का कोई नाम नहीं होता, ऐसे Object को Anonymous Object कहा जाता है।
इस Notation का प्रयोग करते हुए हम displayInfo() Function में ऐसा Object Pass कर सकते हैं, जिसमें name व age दोनों, अथवा दोनों में से किसी एक या किसी को भी Specify न किया गया हो।
Function को इस तरह से Define किया गया है कि ये Function आने वाले Arguments की Properties को typeof Operator का प्रयोग करके Check करता है। यदि आने वाले Argument की name Property”string” Type की हो, तो output नाम के Variable में आने वाले नाम के साथ एक Message Store कर देता है, जबकि आने वाले Argument की age Property”number” Type की हो, तो output नाम के Variable में आने वाली Age के साथ एक Message Store कर देता है।
यदि Function Call करते समय name व age दोनों को Specify किया गया हो, तो ये Function दोनों Values को Display कर देता है, जबकि यदि एक भी Property को Specify न किया गया हो, तब भी ये Function Normal तरीके से काम करता है।
किसी Object में Variable Number of Optional Arguments Pass करने का Object Literal Notation एक Best तरीका होता है। सामान्यत: बहुत सारे Named Arguments को Specify करने पर Function काफी Typical दिखाई देने लगता है।
इसलिए जिन Arguments की सबसे ज्यादा जरूरत हो, उन्हें Named Argument की तरह Specify करना चाहिए, जबकि इन Arguments में Object Literal Notation का प्रयोग करते हुए Optional Arguments Pass किए जाने चाहिए।
हालांकि Object की Properties को सामान्यत: Dot Operator का प्रयोग करके Access किया जाता है, जो कि ज्यादातर Object Oriented Programming Language का Common तरीका है। लेकिन हम JavaScript में Bracket Notation का प्रयोग करके भी किसी Object की विभिन्न Properties को Access कर सकते हैं।
जब हम Bracket Notation Use करते हैं, तब हमें हर Access की जाने वाली Property को String के रूप में Specify करना जरूरी होता है। जैसे-
[code] alert(person[“name”]); // Output: Kuldeep alert(person.name); // Output: Kuldeep [/code]
Functionally इन दोनों प्रकार के Notations में कोई अन्तर नहीं है। Bracket Notation को Use करने का सबसे मुख्य फा;दा ये है कि हम Object की Property को एक Variable में Store करके उस Variable को Brackets के बीच निम्नानुसार Use कर सकते हैं:
[code] var propertyName = "name"; alert(person[propertyName]); // Output: Kuldeep [/code]
हम देख सकते हैं कि उपरोक्त alert Statement में हमने Property Name को एक String की तरह नहीं बल्कि सामान्य Variable की तरह Specify किया है और हम ऐसा इसलिए कर सकते हैं, क्योंकि हमने propertyName नाम के Variable में Property को पहले ही एक String Format में Store कर दिया है।
वैसे जब तक Property को Variable की तरह Specify करना जरूरी न हो, तब तक हमें Dot Notation का ही प्रयोग करते हुए ही Properties को Access व Specify करना चाहिए।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance JavaScript in Hindi | Page: 669 | Format: PDF