जावास्क्रिप्ट में, हमारे पास "कक्षा" बनाने और इसे सार्वजनिक कार्य करने के दो तरीके हैं।प्रोटोटाइप के माध्यम से इसे बनाकर प्रोटोटाइप के माध्यम से परिभाषित तरीकों - वास्तव में एक प्रदर्शन अंतर?
विधि 1:
function MyClass() {
var privateInstanceVariable = 'foo';
this.myFunc = function() { alert(privateInstanceVariable); }
}
विधि 2:
function MyClass() { }
MyClass.prototype.myFunc = function() {
alert("I can't use private instance variables. :(");
}
मैं कई बार लोगों saying पढ़ा है कि का उपयोग कर सभी उदाहरणों समारोह का एक ही प्रति साझा रूप में नहीं बल्कि विधि 2 अधिक कुशल है प्रत्येक को अपना खुद का प्राप्त करने से। प्रोटोटाइप के माध्यम से कार्यों को परिभाषित करने के लिए एक बड़ा नुकसान है - यह निजी आवृत्ति चर के लिए असंभव बनाता है।
हालांकि, सिद्धांत रूप में, विधि 1 का उपयोग करके किसी ऑब्जेक्ट का प्रत्येक उदाहरण फ़ंक्शन की अपनी प्रतिलिपि देता है (और इस प्रकार आवंटन के लिए आवश्यक समय का उल्लेख न करने के लिए और अधिक स्मृति का उपयोग करता है) - यह वास्तव में अभ्यास में क्या होता है ? ऐसा लगता है कि ऑप्टिमाइज़ेशन वेब ब्राउज़र आसानी से इस बेहद आम पैटर्न को पहचानने के लिए बना सकते हैं, और वास्तव में ऑब्जेक्ट संदर्भ के सभी उदाहरण हैं, इन "कन्स्ट्रक्टर फ़ंक्शंस" के माध्यम से परिभाषित कार्यों की प्रति। फिर यह केवल एक उदाहरण को फ़ंक्शन की अपनी प्रतिलिपि दे सकता है यदि इसे बाद में स्पष्ट रूप से बदला जाता है।
कोई अंतर्दृष्टि - या इससे भी बेहतर, असली दुनिया का अनुभव - दोनों के बीच प्रदर्शन अंतर के बारे में, बेहद सहायक होगा।
यह भी देखें [जावास्क्रिप्ट प्रोटोटाइप ऑपरेटर प्रदर्शन: स्मृति बचाता है, लेकिन क्या यह तेज़ है? ] (http://stackoverflow.com/q/3493252/1048572) – Bergi