में परिभाषित विधियों के साथ जावास्क्रिप्ट मॉड्यूल पैटर्न बनाम कन्स्ट्रक्टर एक एकल उदाहरण और एक से अधिक उदाहरण बिंदु दृश्य से, मैं मॉड्यूल पैटर्न के बाद कोड की उन सभी अतिरिक्त पंक्तियों को क्यों लिखूं, केवल मानक कन्स्ट्रक्टर का उपयोग विधियों और गुणों के साथ निर्माता शरीर में?कन्स्ट्रक्टर
मॉड्यूल पैटर्न नमूना: http://jsfiddle.net/T3ZJE/1/
var module = (function() {
// private variables and functions
var foo = 'bar';
// constructor
var module = function() {
};
// prototype
module.prototype = {
constructor: module,
something: function() {
}
};
// return module
return module;
})();
var my_module = new module();
console.log(my_module)
निर्माता नमूना: http://jsfiddle.net/EuvaS/2/
function Module(){
// private variables and functions
var foo = 'bar';
//public methods
this.something = function() {
}
}
var my_module = new Module();
console.log(my_module);
मेरे लिए अंतिम परिणाम काफी एक ही है। दोनों में सार्वजनिक गुण और विधियां हो सकती हैं, दोनों में "निजी" चर और विधियां हो सकती हैं जिन्हें सार्वजनिक तरीकों से एक्सेस किया जा सकता है।
दोनों सिंगलटन के लिए एक बार सार्वजनिक/प्रोटोटाइप विधियों को परिभाषित करेंगे, दोनों ऑब्जेक्ट के कई उदाहरण/क्लोन के लिए उन्हें कई बार परिभाषित करेंगे।
क्या मुझे कुछ याद आ रही है? अंतर क्या है?
यह वास्तव में एक महत्वपूर्ण अंतर है। – Fergal
कूप और गिगल्स के लिए, कन्स्ट्रक्टर विधि में यह मामूली संशोधन स्थिर निजी वर्र्स बनाएगा और केवल एक बार हमारे सार्वजनिक तरीकों को परिभाषित करेगा जबकि उन्हें कन्स्ट्रक्टर स्कोप में सभी निजी वर्र्स तक पहुंचने की अनुमति होगी: http://jsfiddle.net/zHwQX/2/ – Fergal
@ फर्गल अच्छा बिंदु, वह भी नहीं देखा था। तो मुझे लगता है कि समग्र, अधिक कार्यक्षमता और छोटी मेमोरी पदचिह्न – Damp