प्रोटोटाइप का उपयोग तेजी से ऑब्जेक्ट सृजन के लिए बनाता है, क्योंकि जब भी कोई नई ऑब्जेक्ट बनाई जाती है तो उस फ़ंक्शन को फिर से बनाया नहीं जाना चाहिए।
जब आप ऐसा करते:
function animal(){
this.name = 'rover';
this.set_name = function(name){
this.name = name;
}
}
set_name
समारोह बनाई गई है नए सिरे से हर बार आप एक जानवर पैदा करते हैं। लेकिन जब आप यह
animal.prototype.set_name = function(name){
this.name = name;
}
फ़ंक्शन को हर बार फिर से बनाया जाना आवश्यक नहीं है; यह प्रोटोटाइप में एक ही स्थान पर मौजूद है। तो जब आप someAnimal.set_name("Ubu");
पर कॉल करते हैं तो this
संदर्भ someAnimal
पर सेट किया जाएगा और (केवल एकमात्र) set_name
फ़ंक्शन कॉल किया जाएगा।
एक लाभ हालांकि पहले सिंटैक्स का उपयोग करने के लिए नहीं है:
function animal(){
var privateData = 'foo'
this.name = 'rover';
this.set_name = function(name){
this.name = name;
alert(privateData); //will alert 'foo'
}
}
डगलस Crockford कि कारण के लिए कहता है यह "विशेषाधिकार" की तरह बनाई गई कार्य: इस तरह से बनाया कार्यों निजी डेटा के लिए उपयोग होगा : उनके पास सार्वजनिक, और निजी डेटा दोनों तक पहुंच है।
स्रोत
2011-12-08 15:37:32
एक वर्ग के लिए आवृत्ति स्तर साझा सदस्य (गैर स्थैतिक)। उदाहरण) Person.prototype.instance_counter = 0; // Person.instance_counter जैसे क्लासनाम के साथ एक्सेस नहीं किया जा सकता है (यह स्थिर है।) –