मैं हाल ही में जावास्क्रिप्ट के साथ बहुत काम कर रहा हूं और कुछ बड़े फ़ंक्शन संग्रह बनाए हैं। मुझे उप-कार्यक्षमता की आवश्यकता है जो मैं मुख्य पुस्तकालय से अलग करना चाहता हूं फिर भी मुख्य पुस्तकालय में शामिल किया गया है लेकिन अभी तक ऐसा करने के लिए एक शानदार तरीका नहीं मिला है।वर्तमान नामस्थान/कक्षा के अंदर जावास्क्रिप्ट उप नेमस्पेस/कक्षा के लिए वाक्यविन्यास क्या है?
यहाँ है कि मैं इस समय का उपयोग
तो मैं आमतौर पर सेटअप मेरी मुख्य पुस्तकालय इस
// Main library
var animals = function(settings){
// Main library stuff
}
की तरह उप वर्गों/उप कार्यक्षमता कि अलग से, लेकिन अभी भी समझाया है जोड़ने के लिए उदाहरण के एक जोड़े हैं मुख्य पुस्तकालय का हिस्सा ...
ऑब्जेक्ट शाब्दिक नोटेशन
का उपयोग करने वाला यह पहला तरीका हैanimals.prototype.dogs = {
addDog: function(){
// Can only access the dogs object
var test = this;
},
removeDog: function(){}
}
// Usage of the whole thing
var animalsInstance = new animals({a: 1, b: 3});
animalsInstance.dogs.addDog();
जबकि मुझे वास्तव में इसका वाक्यविन्यास पसंद है, मैं वास्तव में इसका उपयोग कभी नहीं कर सकता क्योंकि कुत्ते के ऑब्जेक्ट के अंदर किसी भी कार्य के अंदर जानवरों के उदाहरण का संदर्भ देने का कोई तरीका नहीं है। तो मैं एक स्थानापन्न के रूप इस अंकन के साथ आया था
animals.prototype.dogs = function(){
var parent = this;
return {
addDog: function(){
// The animals instance
var test = parent;
// The dogs instance
var test2 = this;
},
removeDog: function(){}
}
}
// Usage
var animalsInstance = new animals({a: 1, b: 3});
animalsInstance.dogs().addDog();
हालांकि अब मैं कुत्तों कार्यों मैं क्या वास्तव में नहीं थोड़ा hacky तरह से मैं की तरह के सभी उप कार्यक्षमता अंदर से जानवरों उदाहरण के लिए उपयोग कर सकते हैं मैंने इसे किया क्या किसी को भी क्लीनर विधियां मिली हैं?
http://stackoverflow.com/questions/1595611/how-to-properly-create-a-custom-object-in-javascript#1598077 – zerkms
धन्यवाद, मुझे लगता है कि मैंने जो प्रश्न लिखा था वह आपकी याद आ रही थी, आपका लिंक बताता है कि मूल विधियों को प्राप्त करने वाले उप वर्ग को कैसे बनाया जाए। मुझे लगता है कि मैं जो भी कर रहा हूं वह संबंधित विधियों के विभिन्न समूहों को अलग-अलग नामस्थान के तहत अलग करने का एक तरीका है। i.e जानवरों के नीचे सभी कुत्तों से जुड़े कार्यों। डॉग्स। [यहां कोई विधि नाम डालें]। जब आप 40/50 + कार्यों में आते हैं तो यह बोझिल हो जाता है। मेरा असली दुनिया का उदाहरण एक वृक्षग्रिड के लिए था जो मैं विकसित कर रहा था, हर समारोह इसे मुख्य ट्रीग्रिड कक्षा के तहत रखने में प्रासंगिक था, लेकिन मुझे कार्यक्षमता के उपखंडों को अलग करने की आवश्यकता थी। – Ally
यदि आप सभी विधियों को नहीं चाहते हैं - विरासत का उपयोग न करें, प्रतिनिधिमंडल का उपयोग करें। – zerkms