2009-12-19 8 views
7

मैं जावास्क्रिप्ट में फ़ंक्शन के नामस्थानों से थोड़ा उलझन में हूं। क्या मैं एक ही नाम से काम कर सकता हूं?कोई भी उदाहरण के साथ जावास्क्रिप्ट में नेमस्पेस समझा सकता है?

धन्यवाद

+0

http://www.dustindiaz.com/namespace-your-javascript/ इस पर कुछ अच्छे उदाहरण हैं। –

उत्तर

18

वहाँ ++ वहाँ सी में है की तरह जावास्क्रिप्ट में एक नाम स्थान का कोई आधिकारिक अवधारणा है। हालांकि, आप नामस्थानों का अनुकरण करने के लिए जावास्क्रिप्ट ऑब्जेक्ट्स में फ़ंक्शंस को लपेट सकते हैं। तब उन कार्यों कॉल करने के लिए आप MyNamespace.myFunction(somearg, someotherarg); और MyNamespace.myOtherFunction(); लिखते थे

var MyNamespace = {}; 

MyNamespace.myFunction = function(arg1, arg2) { 
    // do things here 
}; 

MyNamespace.myOtherFunction = function() { 
    // do other things here 
}; 

,,: उदाहरण के लिए, यदि आप एक "नाम स्थान" MyNamespace कहा जाता है में एक समारोह लिखना चाहते थे, आप निम्न कर सकते हैं।

मुझे यह भी जिक्र करना चाहिए कि जावास्क्रिप्ट में नामस्थान और कक्षा जैसी चीजें करने के कई तरीके हैं। मेरी विधि उन लोगों में से एक है।

अधिक चर्चा के लिए, आप this प्रश्न पर भी एक नज़र डालना चाहेंगे।

+5

पूंजी का पहला पत्र आमतौर पर इंगित करता है कि यह एक निर्माता है। इसके बजाय 'myNamespace' का उपयोग करना बेहतर हो सकता है। –

+0

मुझे लगता है कि यह वास्तव में व्यक्तिगत कोडिंग शैली का मामला है, वास्तव में। मैं हमेशा कक्षा के नाम और रचनाकारों के लिए पहले अक्षर का उपयोग करता हूं। इस मामले में, 'माईनेस्पेस' कक्षा के रूप में कार्य कर रहा है। –

2

वर्तमान में, यदि आप ECMAScript 6/जावास्क्रिप्ट 2 नामस्थानों का जिक्र कर रहे हैं, तो कोई जावास्क्रिप्ट कार्यान्वयन नामस्थानों का समर्थन नहीं करता है।

यदि आप इस बात का जिक्र कर रहे हैं कि आज नामस्थान कैसे किया जाता है, तो यह केवल एक ऑब्जेक्ट का उपयोग होता है और आप जिस विधि को परिभाषित करना चाहते हैं उसे डालते हैं।

var myNamespace = {}; 
myNamespace.foo = function() { /*...*/ }; 
myNamespace.bar = function() { /*...*/ }; 
संबंधित मुद्दे