मान लीजिए कि मैं नाम स्थान करते हैं,फ़ंक्शन ए से फ़ंक्शन ए को उसी नामस्थान में कैसे कॉल करें?
var Namespace = {
A : function() {
alert('Hello!');
},
B : function() {
// Call A() from here, do other stuff
}
}
इस नाम स्थान में, मैं इरादा एक बी करने के लिए एक सहायक समारोह() नाम स्थान के बाहर कभी नहीं बुलाया जाएगा कहना है कि, एक होने के लिए। इसे केवल नामस्थान के भीतर के कार्यों द्वारा बुलाया जाएगा।
किसी नामस्थान के भीतर स्थानीय/सहायक फ़ंक्शन के मुद्दे को हल करने का सबसे अच्छा तरीका क्या है? जिस तरह से मैं इसे देख वहाँ दो संभावनाएं हैं:
// Method #1
var Namespace = {
A: function() {
alert('Method #1');
},
B : function() {
Namespace.A();
}
}
Namespace.B();
// Method #2
function Namespace2() {
var A = function() {
alert('Method #2');
};
this.B = function() {
A();
}
}
var ns2 = new Namespace2();
ns2.B();
पहली विधि में, यह बदसूरत और awkard नाम स्थान के भीतर हर समारोह में Namespace.A() (बार-बार) टाइप करने के लिए है। यह मुझे विधि # 2 पसंद करने के लिए प्रेरित करता है। लेकिन मैं उत्सुक था कि यहां सबसे अच्छा अभ्यास क्या था।
यह एक अच्छा समाधान है। मेरा सवाल यह है कि, जब भी आप इसे एक्सेस करते हैं, तो नेमस्पेस अपने कार्यों को फिर से परिभाषित करता है? यदि ऐसा है, तो यह स्मृति का एक बुरा उपयोग होगा। – ktm5124
@ ktm5124: नहीं। फ़ंक्शन तुरंत चलाया जाता है और ऑब्जेक्ट 'self' को' नेमस्पेस 'को असाइन किया जाता है। – Hubro
@ कोडमकी आपके मामले में आप एकाधिक 'नेमस्पेस' ऑब्जेक्ट्स नहीं बना सकते हैं। – Neal