instantiating कार्य करने के लिए एक सूचक प्राप्त करने के लिए (जो एक "वर्ग" नहीं है, लेकिन प्रकार है), obj.constructor
जहां obj
किसी भी वस्तु का उपयोग करें।
जावास्क्रिप्ट में कोई कक्षा नहीं है। इस प्रकार, जावास्क्रिप्ट में कोई कक्षा के उदाहरण नहीं हैं। केवल वस्तुएं हैं। वस्तुओं को अन्य वस्तुओं (उनके तथाकथित प्रोटोटाइप) से प्राप्त होता है। आप अपने कोड में क्या कर रहे हैं सचमुच किसी ऑब्जेक्ट टी को परिभाषित कर रहा है, जो विशेषता क्यू एक और ऑब्जेक्ट है, जो विशेषता डब्ल्यू एक अन्य ऑब्जेक्ट है, जिसका विशेषता सी एक फ़ंक्शन है।
जब आप "टी.क्यू.डब्ल्यूसी का नया उदाहरण बना रहे हैं", तो आप वास्तव में केवल कन्स्ट्रक्टर के रूप में कार्य T.Q.W.C को कॉल कर रहे हैं। एक कन्स्ट्रक्टर के रूप में बुलाया जाने वाला एक फ़ंक्शन एक नई ऑब्जेक्ट लौटाएगा जिस पर कन्स्ट्रक्टर फ़ंक्शन को कॉल किया गया था (this
constructorFunction.apply(newObject, arguments);
जैसे नए ऑब्जेक्ट को मधुमक्खी कर रहा है)। उस लौटे ऑब्जेक्ट में एक छिपी हुई संपत्ति constructor
होगी जो ऑब्जेक्ट बनाने के लिए कन्स्ट्रक्टर के रूप में बुलाए गए फ़ंक्शन को इंगित करेगी। इसके अतिरिक्त एक भाषा सुविधा है जो आपको परीक्षण करने की अनुमति देती है कि किसी दिए गए फ़ंक्शन को instanceof
ऑपरेटर का उपयोग करके ऑब्जेक्ट के लिए कन्स्ट्रक्टर फ़ंक्शन के रूप में उपयोग किया गया था।
तो आप निम्न कर सकता है:
console.log(x instanceof T.Q.W.C);
या
console.log(x.constructor === T.Q.W.C);
स्रोत
2011-08-07 16:13:36
मुझे लगता है कि आप सवाल अलग तरीके से व्यक्त किया है। 'x' * * एक उदाहरण है और हां, 'नया' का उपयोग करना एक उदाहरण प्राप्त करने के लिए बहुत विश्वसनीय है। उदाहरण के प्रकार को पाने के लिए शायद आप 'instancof' की तलाश में हैं? https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/instanceof –