क्योंकि आपने सादे ऑब्जेक्ट के साथ f
की मूल prototype
ऑब्जेक्ट को पूरी तरह से बदल दिया है। यह prototype
ऑब्जेक्ट था जिसने f
को .constructor
संपत्ति के माध्यम से संदर्भित किया था।
ऑब्जेक्ट शाब्दिक वाक्यविन्यास का उपयोग करके बनाए गए ऑब्जेक्ट का निर्माता Object
कन्स्ट्रक्टर होगा।
इसे वापस पाने के लिए, आपको इसे मैन्युअल रूप से वहां रखना होगा।
f = function() {};
f.prototype = {};
f.prototype.constructor = f;
thing = new f;
इस नए प्रोटोटाइप वस्तु के प्रोटोटाइप श्रृंखला में पर .constructor
संपत्ति शैडो होगा।
यदि आप उस संपत्ति को हटाते हैं, तो आपको Object
फिर से मिल जाएगा।
delete f.prototype.constructor;
console.log(thing.constructor); // Object
स्रोत
2012-09-12 19:29:12