एक्मास्क्रिप्ट के पुराने संस्करणों में आप सीधे वस्तुओं के प्रोटोटाइप तक नहीं पहुंच पाएंगे; prototype
संपत्ति केवल फ़ंक्शंस पर मौजूद थी, और जब इसे कन्स्ट्रक्टर के रूप में उपयोग किया जाता है तो यह खेल में आता है। तो अगर आप ऐसा कर सकता है:
// This is the myObj constuctor
function myObj() {
this.a = "This is a";
this.b = "This is b";
}
// Setting a property on the constructor prototype
// All instances will share this
myObj.prototype.c= "This is c";
// Creating a new object and testing its "c" property
var obj = new myObj();
alert(obj.c); // "This is c"
Modern browsersObject.getPrototypeOf
लागू, जिसका अर्थ है आप यह कर सकते हैं:
var myObj = {
a : "This is a",
b : "This is b"
}
Object.getPrototypeOf(myObj).c= "This is c";
लेकिन, आप सावधान रहना होगा! यदि आप ऐसा करते हैं, तो सभी ऑब्जेक्ट्स जो अब मौजूद हैं और भविष्य में बनाए गए सभी ऑब्जेक्ट्स को उनके प्रोटोटाइप श्रृंखला के माध्यम से c
संपत्ति का वारिस होगा!
इसका कारण यह है myObj
प्रकार Object
की है, और Object
के प्रोटोटाइप सब कुछ किसी भी प्रकार का ऑब्जेक्ट है कि द्वारा विरासत में मिली है।
var myObj = {
a : "This is a",
b : "This is b"
}
Object.getPrototypeOf(myObj).c= "This is c";
var anotherObject = {};
alert(anotherObject.c); // "This is c" -- was it expected?
See it in action: इस ओर जाता है।
यह सिर्फ 'myObj.c = "foo" होना चाहिए; ' – epascarello
आप ऑब्जेक्ट.getPrototypeOf के साथ एक उदाहरण से प्रोटोटाइप प्राप्त कर सकते हैं: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/ऑब्जेक्ट/getPrototypeOf हालांकि इस मामले में आप शायद नहीं चाहते हैं। –
[एलोक्वेंट जावास्क्रिप्ट] (http://eloquentjavascript.net/chapter8.html) पर एक नज़र डालें। –