का उपयोग कर p
के कन्स्ट्रक्टर प्रोटोटाइप को पुनर्प्राप्त कर सकते हैं क्योंकि prototype
कन्स्ट्रक्टर फ़ंक्शन की एक संपत्ति है, न कि स्वयं की संपत्ति। हालांकि, prototype
वस्तु निर्माता के लिए एक संदर्भ है, तो आप उपयोग कर सकते हैं अपने constructor
संपत्ति के माध्यम से एक वस्तु की prototype
:
function Foo() {}
Foo.prototype.foo = "bar";
var c = new Foo;
console.log(c.constructor === Foo); // true
console.log(c.constructor.prototype); // { foo: 'bar' }
बहरहाल, यह अगर आप निर्माता समारोह के प्रारंभिक prototype
संपत्ति के ऊपर लिख काम नहीं करेगा:
function Foo() {}
// I overwrite the prototype property, so I lose the initial reference
// to the constructor.
Foo.prototype = {
foo: "bar"
};
var c = new Foo;
console.log(c.constructor === Foo); // false
console.log(c.constructor === Object); // true
console.log(c.constructor.prototype); // {}
यही कारण है कि आप ईएस 5 में पेश की गई नई Object.getPrototypeOf
विधि का उपयोग बंद कर रहे हैं।
function Foo() {}
Foo.prototype = {
foo: "bar"
};
var c = new Foo;
console.log(c.constructor === Foo); // false
console.log(c.constructor === Object); // true
console.log(c.constructor.prototype); // {}
console.log(Object.getPrototypeOf(c)); // { foo: 'bar' }
एक अन्य समाधान सुनिश्चित करें कि आप प्रोटोटाइप पर constructor
संदर्भ बहाल करने के लिए हो गया होता:
function Foo() {}
// Overwriting the initial prototype
Foo.prototype = {
constructor: Foo, // restore the constructor reference
foo: "bar"
};
स्रोत
2012-04-26 08:44:36
उत्कृष्ट स्पष्टीकरण –
@ टाहा अहमद: खुशी हुई जिसने मदद की! –