2012-10-04 32 views
5

मैं इस कोड पर EaselJS लाइब्रेरी के लिए उदाहरण में कैम करता हूं - यह क्या करता है यह पूरे createjs लाइब्रेरी का नामस्थान "विंडो" में निर्दिष्ट करता है।विंडो में जावास्क्रिप्ट नेमस्पेस सेट करें: बुरा विचार? या शानदार?

<script> 
var createjs = window; 
</script> 

मेरा प्रश्न यह है: खिड़की करने के लिए एक पुस्तकालय एक बहुत गूंगा विचार का नाम स्थान की स्थापना कर रहा है? क्या यह सिर्फ नामांकित वैरिएबल को अचानक वैश्विक स्कोप्ड बनाकर नामस्थान का उपयोग करने के पूरे बिंदु से छुटकारा नहीं पाता है?

एकमात्र लाभ जो मैं देख सकता हूं वह आपको अपनी वस्तुओं के लिए छोटे नियंत्रकों को लिखने दे रहा है।

stage = new Stage(canvas); 

के बजाय: उदाहरण करके लिखने के लिए

stage = new createjs.Stage(canvas); 

इस एक बुरा विचार है, या है किसी भी तरह शानदार है, या बस कोई हानि पहुंचाए बिना विचित्र है?

+0

यह आपको 'createjs' के दायरे को बदलने की अनुमति दे सकता है। मैंने कभी ऐसा नहीं देखा है। – Blender

+0

यदि वैश्विक नहीं है तो आप इसे और कैसे बेनकाब करने जा रहे हैं? –

+0

@ user1689607 - यह एक नामस्थान है। मेरी समझ यह है कि आप इसे वैश्विक वस्तु के रूप में बेनकाब नहीं करना चाहते हैं। यही कारण है कि यह मौजूद है। परिवर्तनीय नामकरण टकराव के परिवर्तन को कम करने के लिए। लेकिन मुझे यकीन नहीं है: इसलिए सवाल। –

उत्तर

2

मेरे लिए एक अच्छा विचार ऐसा कुछ है जिसे कई लोगों द्वारा सक्रिय रूप से उपयोग किया जाना चाहिए। और यही कारण है कि मैं इस चाल को एक बुरा विचार मानता हूं: संक्षेप में, यह वास्तव में नामस्थानों के विचार को हरा देता है: यदि कई लोग (= अन्य लोकप्रिय जेएस पुस्तकालयों के लेखक) window का उपयोग अपने नामस्थान रूट के रूप में करना शुरू करते हैं, विधियों को ओवरराइट करने के तरीकों का नुकसान अन्य तरीकों को ओवरराइट करने से इस तरह के दृष्टिकोण के किसी भी संभावित फायदे को अस्वीकार कर दिया जाएगा।

+0

मुझे इस उत्तर पर अधिक जानकारी के लिए अच्छा लगेगा, लेकिन मैं इसे स्वीकार करूँगा क्योंकि ऐसा लगता है कि सवाल का जवाब है और कोई विरोधी राय दिखाई नहीं दे रही है। सारांश: यह एक बुरा विचार है। धन्यवाद। –

5

इस तरह से स्थापित किया गया कारण पिछले संस्करणों के साथ पिछड़ा-संगतता बनाए रखना था जो नाम नहीं थे। यह डेवलपर्स को नवीनतम संस्करण में अपग्रेड करने की अनुमति देता है जब इसे अपने सभी कोड को दोबारा बिना दोबारा जोड़ा जाता है।

1

वास्तव में यह निर्भर करता है। यदि आप एकाधिक जेएस पुस्तकालयों का उपयोग कर रहे हैं, तो आप सभी पुस्तकालयों का मनोरंजन करने के लिए विंडो में नेमस्पेस से परहेज कर सकते हैं।

लेकिन यदि आप अपने गेम/एप्लिकेशन के लिए एक लाइब्रेरी (CreateJS) का उपयोग कर रहे हैं, तो आप बहुत सारे समय को बचाने के लिए विंडो में नेमस्पेस का उपयोग करने पर विचार कर सकते हैं जिसे आपके कस्टम नेमस्पेस नाम को ओवर और ओवर लिखने में निवेश किया जाएगा। CreateJS के साथ गेम बनाने के दौरान मुझे यह एक आसान तरीका मिल गया।