मैं जेएस के लिए अपेक्षाकृत नया हूं और मुझे ओओपी सिद्धांतों को सही ढंग से अनुकरण करने में समस्याएं हैं।जावास्क्रिप्ट क्लासेस और वेरिएबल स्कोप
मुझे लगता है कि मेरे पास दो प्रश्न हैं। पहला प्रश्न चर घोषित करने के कई तरीकों से संबंधित है।
function clazz(a)
{
this.b = 2;
var c = 3;
this.prototype.d = 4; // or clazz.prototype.d = 4?
}
var myClazz = new clazz(1);
हूँ मैं निम्नलिखित आकलन में सही कर:
एक निजी चर कि उदाहरण के विशिष्ट है (clazz की यानी अलग-अलग विविधताएं अद्वितीय और स्वतंत्र वैरिएबल नहीं होगा
मैं एक वर्ग है कहो 'ए')। इसे क्लैज के भीतर से एक्सेस किया जा सकता है: 'ए'।
बी एक सार्वजनिक चर है जो उदाहरण विशिष्ट है। इसे क्लैज़ के भीतर 'this.b' और बाहरी क्लैज से 'myClazz.b' के रूप में एक्सेस किया जा सकता है।
सी एक निजी चर है जो स्थैतिक या वर्ग विशिष्ट है (यानी क्लैज के विभिन्न उदाहरण समान 'सी' चर साझा करेंगे)। इसे क्लैज के किसी भी उदाहरण के भीतर से 'सी' के रूप में एक्सेस किया जा सकता है और क्लैज के उदाहरण में परिवर्तन क्लैज के सभी उदाहरणों में दिखाई देता है।
डी एक सार्वजनिक चर है जो स्थैतिक/वर्ग विशिष्ट है। इसे 'clazz.prototype.d' या 'myClazz.prototype.d' के माध्यम से कहीं से भी एक्सेस किया जा सकता है।
परिवर्तनीय योजना की मेरी समझ के साथ मेरे पास समग्र समस्या यह है कि एक निजी चर घोषित करने का कोई तरीका नहीं है जो स्थैतिक नहीं है (यानी वर्ग के प्रत्येक उदाहरण के लिए एक अद्वितीय संस्करण)।
दूसरा प्रश्न विभिन्न प्रकार की कक्षा घोषणाओं के संबंध में है।
मैं उपयोग कर रहे हैं:
var MySingleton = new function() {...};
एकमात्र बनाने के लिए। क्या ये सही है?
var MySingleton = new function() {...}();
मैं करने के लिए इस पद्धति का उपयोग कर रहा है: मैं भी इस स्थिति में 'नई' कीवर्ड के प्रभाव के रूप में अनिश्चित के साथ ही जोड़कर() फ़ंक्शन घोषणा के अंत के रूप में इतना करने के लिए कर रहा हूँ धनुकोष्ठक एक कक्षा घोषित करें और फिर उस वर्ग के तत्काल उदाहरण:
function myClass() {...};
var classA = new myClass();
var classB = new myClass();
क्या यह उचित तरीका है?
+1। एक बहुत ही पूर्ण और सूचनात्मक उत्तर। –
सूचनात्मक उत्तर के लिए धन्यवाद। एक अनुवर्ती: सिंगलटन घोषणा के लिए मॉड्यूल दृष्टिकोण और मूल पोस्ट में संदर्भित शैली के बीच वास्तविक अंतर क्या हैं? – Cmc
** @ लियोर: ** धन्यवाद !, ** सीएमसी: ** मैंने आपके द्वारा पोस्ट किए गए वाक्यविन्यास के बारे में कुछ लिखा है ... – CMS