मैं अक्सर सामना करना पड़ा साइटों किक्या जावास्क्रिप्ट में नेमस्पेसिंग करने का कोई "संक्षिप्त" तरीका है?
namespaces = { com : { example: { example.com's data} }
लेकिन यह अन्य namespaced चौखटे के संबंध में सुरक्षित रूप से स्थापित करने लगता है की तर्ज पर एक "नाम स्थान" संरचना के भीतर अपने जावास्क्रिप्ट के सभी डाल की एक अपेक्षाकृत भारी राशि की आवश्यकता होती है कोड (> 2 लाइनों के रूप में परिभाषित)। मैं सोच रहा था कि क्या ऐसा करने के लिए कोई संक्षिप्त तरीका है? और क्या इसे संरचना करने के लिए अपेक्षाकृत मानक/सुसंगत तरीका है? जैसे। क्या "कॉम" नेमस्पेस सीधे वैश्विक वस्तु से जुड़ा हुआ है, या यह नामस्थान ऑब्जेक्ट के माध्यम से जुड़ा हुआ है?
[संपादित करें: व्हाउप्स, जाहिर है {com = { ... } }
मेरे इरादे के करीब कुछ भी पूरा नहीं करेगा, शोग 9 को इंगित करने के लिए धन्यवाद। : D]
हालांकि, अब 'com_example' वैश्विक वस्तु का हिस्सा बनने जा रहा है। मान लें कि हम 'com_something_else',' com_etc' 'और कई ऑब्जेक्ट्स जोड़ते हैं, फिर भी हम वैश्विक ऑब्जेक्ट के रूट स्तर को प्रदूषित कर रहे हैं। क्या यह बेहतर नहीं होगा अगर हमारे पास वैश्विक में केवल एक 'कॉम' वस्तु थी जहां अन्य सभी वस्तुओं को जोड़ा गया था? साथ ही, हम किसी भी मौजूदा ऑब्जेक्ट को ओवरराइट नहीं करना चाहते हैं, यदि एकाधिक पुस्तकालयों का उपयोग किया जा रहा है तो क्या होगा। – Peter
@ पीटर: यदि एकाधिक पुस्तकालय एक ही प्रतीक को परिभाषित करते हैं, तो आपको कोई समस्या नहीं होगी; यही कारण है कि jQuery जैसी लाइब्रेरी ऐसी चीजों तक पहुंच जाती है ताकि सबकुछ एक वैश्विक वस्तु में हो सके। मेरा मुद्दा यह नहीं था कि आपको * कई शीर्ष-स्तरीय ऑब्जेक्ट्स का उपयोग करना चाहिए, केवल गहरे-नेस्टेड ऑब्जेक्ट्स वाले नामस्थानों को फ़ेक करना आपको वास्तव में पागल-लंबे ऑब्जेक्ट नामों पर कुछ भी नहीं खरीदता है। अधिक व्यावहारिक विधि के लिए मेरा आखिरी उदाहरण देखें: एक वैश्विक नाम का उपयोग करें जो टकराव की संभावना नहीं है, और फिर एक ऐसी तकनीक जो कोड के अलग-अलग बिट्स को ऑब्जेक्ट जोड़ने की अनुमति देती है। – Shog9