ऐसा करने से यह सुनिश्चित होता है कि आपके द्वारा परिभाषित किए गए किसी भी चर/कार्य को वैश्विक दायरे में नहीं जाना चाहिए। पृष्ठ में शामिल सभी स्क्रिप्ट्स एक ही वैश्विक दायरे को साझा करते हैं, इसलिए यदि आप एक ही नाम के साथ दो अलग-अलग स्क्रिप्ट में दो चर परिभाषित करते हैं, तो वे वास्तव में समान चर का संदर्भ लेते हैं।
उदाहरण के लिए, आप a.js और b.js, इसलिए तरह परिभाषित किया गया है लगता है:
// a.js
var node = document.getElementById("something");
function frob() {
node.style.display = "none";
}
// b.js
var node = document.getElementById("something-else");
आप अपने पृष्ठ में a.js के बाद b.js शामिल हैं तो जब आप frob
फोन यह जा रहा है "कुछ" नोड के बजाय "कुछ और" नोड को छिपाने के लिए जैसे आप उम्मीद करेंगे।
// a.js
(function() {
var node = document.getElementById("something");
window.frob = function() {
node.style.display = "none";
}
})();
// b.js
(function() {
var node = document.getElementById("something-else");
})();
और b.js अंदर सामान क्या a.js. में है के साथ हस्तक्षेप करने नहीं जा रहा है:
इसके बजाय, आप की तरह कुछ कर सकते हैं
ध्यान दें कि वास्तव में मैं सीधे window
पर कार्यों नहीं जोड़ना होगा, बजाय मुझे लगता है कि glow.js क्या स्क्रिप्ट आप से जुड़ा हुआ है के लिए इसी तरह कुछ करना होगा: एकल वैश्विक चर है कि मेरी स्क्रिप्ट "नाम स्थान" का प्रतिनिधित्व करता है। उदाहरण के लिए, jQuery में, वह एकल वैरिएबल चर $
(या jQuery
) है।
स्रोत
2011-03-30 22:38:11
बहुत बहुत धन्यवाद, अब यह बहुत स्पष्ट है। – Michael