मैं अपनी जावास्क्रिप्ट को अलग-अलग फाइलों में विभाजित करके और प्रत्येक फ़ाइल को 'सब' नेमस्पेस देकर अधिक मॉड्यूलर बनाना चाहता हूं।जावास्क्रिप्ट नेमस्पेसिंग
subA.js
if(typeof ex == "undefined") {
var ex = {};
}
ex.subA = function() {
//all functions of subA here
}
और subB आदि
फिलहाल के लिए एक ही मेरे पास है 1 फ़ाइल, ex.js
var ex = (function() {
//private vars/funcs
return {
//public vars/funcs
}
})();
यह मैं की तरह लग रहा मेरे अधिकांश कार्यों को subA.js और subB.js में ले जाना चाहिए, लेकिन शुरुआत में ex.js को शामिल करना चाहिए, subA.js और subB.js के साथ fterwards।
मेरे पास कई प्रश्न हैं।
मुझे याद रखने में कठिनाई हो रही है कि मैंने प्रारंभिक नेमस्पेसिंग फ़ाइल कैसे बनाई, ex.js. ऐसा लगता है कि अज्ञात कार्य शुरू में सब कुछ निजी बनाने के लिए है, लेकिन मुझे याद नहीं है कि इसे ब्रांड्स में संलग्न क्यों किया जाना चाहिए और फिर अंत में
();
के साथ सीधे निष्पादित किया गया।q1 से निम्नलिखित के बाद, क्या मेरी उप फाइलें ex.js के समान प्रारूप में होनी चाहिए, यानी, एनन फ़ंक्शन कोष्ठक में लपेटा गया है और सीधे निष्पादित किया गया है?
ऐसा लगता है कि उप फ़ाइलों को केवल
ex
के सार्वजनिक कार्यों तक पहुंच होगी, क्या यह सच है? यदि ऐसा है, तो मैं अपनी उप फ़ाइलों को निजी कार्यों तक पहुंचने की अनुमति कैसे दे सकता हूं?मेरी HTML फ़ाइल, मेरे document.ready समारोह में (jQuery) में, मैं एक चर करने के लिए पूर्व initialising किया जाना चाहिए या मैं जा रहा
$(document).ready(function() { ex.doSomething(); ex.doSomethingElse(); }
है द्वारा व्यक्तिगत रूप से प्रत्येक कार्य कॉल कर सकते हैं दोनों के बीच एक अंतर है? मुझे लगता है कि जब ex.js शामिल किया जाता है, तो एक वैश्विक चर पूर्व को सीधे बनाया जाता है (अज्ञात फ़ंक्शन को तुरंत निष्पादित किया जाता है), इसलिए मुझे इसे दस्तावेज़ में फिर से परिभाषित करने की आवश्यकता नहीं है।
अगर subA.js
var ex = ex || {};
है कौन से किसी भी अलग में बयान बेहतर पहला है?क्या जेएस कोड शैली मानकों का उपयोग आप करते हैं?
यदि आप इन सबके माध्यम से पढ़ते हैं तो आप पहले से ही एक उत्थान, चीयर्स के लायक हैं।
आप बेहतर रूप से अपनी 'टाइपोफ़' तुलना में उद्धरण जोड़ना चाहते हैं, और '! Ex': 'if (typeof ex ==" अपरिभाषित ") हटाएं। –
@Rob W कुछ ब्राउज़रों को 'अपरिभाषित' के बजाय शून्य के रूप में पूर्व वापस नहीं करते हैं? याहू नाम अंतरण कोड का उपयोग करता है! पूर्व – Michael
जब किसी चर को पहले कभी परिभाषित नहीं किया गया है, तो 'टाइपोफ़' '' अपरिभाषित 'होगा। हालांकि, कुछ गुण चेक करते समय 'शून्य' ('टाइपऑफ नल ===" ऑब्जेक्ट "') वापस कर सकते हैं। –