निम्नलिखित कोड को देखते हुए:मैं जावास्क्रिप्ट ऑब्जेक्ट की प्रोटोटाइप श्रृंखला कैसे देख सकता हूं?
function a() {}
function b() {}
b.prototype = new a();
var b1 = new b();
हम रह सकते हैं कि a
b
की प्रोटोटाइप श्रृंखला में जोड़ा गया है। महान। और, निम्नलिखित सभी सत्य हैं:
b1 instanceof b
b1 instanceof a
b1 instanceof Object
मेरा प्रश्न है, क्या होगा यदि हम समय से पहले b1
की उत्पत्ति को नहीं जानते हैं? हम इसकी प्रोटोटाइप श्रृंखला के सदस्यों को कैसे खोज सकते हैं? आदर्श रूप में मुझे [b, a, Object]
या ["b", "a", "Object"]
जैसे सरणी चाहिए।
क्या यह संभव है? मेरा मानना है कि मैंने एसओ पर कहीं जवाब देखा है, जिसने वर्णन किया कि यह कैसे पता लगाया जाए लेकिन मैं अपने जीवन के लिए इसे फिर से नहीं ढूंढ सकता।
'कन्स्ट्रक्टर' आपको निकटतम प्रोटोटाइप पूर्वजों का कन्स्ट्रक्टर फ़ंक्शन देता है जो किसी अन्य कन्स्ट्रक्टर प्रोटोटाइप से विरासत में नहीं मिला है। यह वह बिल्कुल नहीं है जो आप चाहते हैं। उदाहरण के लिए प्रश्न के कोड में, 'b1.constructor' 'a' है, न कि' b', और यदि आपने 'b' से ऑब्जेक्ट' c' प्राप्त किया है, तो 'c1.constructor' अभी भी' a' होगा। अंगूठे का सामान्य नियम: किसी भी चीज़ के लिए 'कन्स्ट्रक्टर' का उपयोग न करें। [eta: lol @ 'डर और अकेला' ... हाँ, यह जावास्क्रिप्ट के उन हिस्सों में से एक है जिसे उपयोगी लगने वाला कुछ ऐसा करके नरक को भ्रमित करने के लिए डिज़ाइन किया गया है लेकिन वास्तव में एक जाल है।] – bobince
हाँ, मैं मूल प्रश्न को एक दिलचस्प अभ्यास पर विचार करें, लेकिन यह ऐसा कुछ नहीं है जिसे मैं कोड में डाल दूंगा जिसे मैं वास्तव में काम करने की उम्मीद करता हूं। यहां एक बहुत अच्छी व्याख्या है: http://mckoss.com/jscript/object।एचटीएम – Pointy