i) इन दोनों वस्तुओं में क्या अंतर है
सरल उत्तर यह है कि [object]एक मेजबान वस्तु को इंगित करता है जिसमें कोई आंतरिक वर्ग नहीं है। एक होस्ट ऑब्जेक्ट एक ऐसी वस्तु है जो आपके द्वारा काम कर रहे ECMAScript कार्यान्वयन का हिस्सा नहीं है, लेकिन होस्ट द्वारा इसे विस्तार के रूप में प्रदान किया जाता है। DOM होस्ट ऑब्जेक्ट्स का एक सामान्य उदाहरण है, हालांकि अधिकांश नए कार्यान्वयनों में DOM ऑब्जेक्ट मूल ऑब्जेक्ट से विरासत में मिला है और इसमें आंतरिक वर्ग के नाम (जैसे HTMLElement , Window) , etc) हैं। IE का स्वामित्व ActiveXObject होस्ट ऑब्जेक्ट का एक और उदाहरण है।
[object] इंटरनेट एक्सप्लोरर 7 और निम्न में DOM ऑब्जेक्ट्स को अलर्ट करते समय सबसे अधिक देखा जाता है, क्योंकि वे होस्ट ऑब्जेक्ट हैं जिनका कोई आंतरिक वर्ग नाम नहीं है।
ii) यह किस प्रकार की वस्तु है
आप उपयोग करने वाली वस्तु का "प्रकार" (आंतरिक वर्ग) प्राप्त कर सकते हैं Object.prototype.toString। विनिर्देशन के लिए आवश्यक है कि यह हमेशा प्रारूप में एक स्ट्रिंग लौटाता है [object [[Class]]], जहां [[Class]]आंतरिक वर्ग का नाम होता है जैसे कि ऑब्जेक्ट , सरणी , दिनांक , RegExp , आदि। आप इस विधि को किसी भी ऑब्जेक्ट (होस्ट ऑब्जेक्ट सहित) पर लागू कर सकते हैं, का उपयोग करके
Object.prototype.toString.apply(obj);
कई isArrayकार्यान्वयन इस तकनीक का उपयोग यह जानने के लिए करते हैं कि क्या एक वस्तु वास्तव में एक सरणी है (हालांकि यह IE में उतना मजबूत नहीं है जितना कि अन्य ब्राउज़रों में है )।
iii) इस संपत्ति में सभी गुण क्या हैं और प्रत्येक संपत्ति के मूल्य
ECMAScript 3 में, आप एक for...inलूप का उपयोग करके असंख्य गुणों पर पुनरावृति कर सकते हैं । ध्यान दें कि अधिकांश अंतर्निहित गुण गैर-गणना योग्य हैं। कुछ मेज़बान वस्तुओं के बारे में भी यही सच है। ECMAScript 5 में, आप एक सरणी प्राप्त कर सकते हैं जिसमें सभी गैर-विरासत वाले गुणों के नाम हैं Object.getOwnPropertyNames(obj)। इस सरणी में गैर-गणना योग्य और गणना योग्य संपत्ति के नाम होंगे।