2010-06-05 7 views
7

कर सकते हैं किसी को भी समझाने क्या jQuery प्रलेखन वास्तव में इस कथन से करने के लिए बात कर रहा है: "तर्क $ उपनाम का उपयोग फेल सेफ jQuery कोड लिखने के लिए, वैश्विक उर्फ ​​पर निर्भर रहे बिना" जब निम्न का उपयोग कर की चर्चा करते हुए:फेल सेफ jQuery कोड

jQuery(function($) { 
}); 

मैं थोड़ी देर के लिए jquery का उपयोग कर रहा हूं, इसलिए समझें कि यह कोड कुछ हद तक क्या कर रहा है, लेकिन यह समझने के लिए प्रलेखन में इस्तेमाल किया गया वाक्यांश असफलता jquery कोड मुझे पहेली करता है और मुझे यकीन है कि यह महत्वपूर्ण है या नहीं।

उत्तर

9

$ परिवर्तनीय नाम jQuery के लिए अद्वितीय नहीं है - अन्य जावास्क्रिप्ट पुस्तकालय भी इसका उपयोग करते हैं। यदि आप एक ही पृष्ठ पर दोनों का उपयोग कर रहे हैं (शायद जानबूझकर नहीं - किसी अन्य लाइब्रेरी को किसी तृतीय पक्ष स्क्रिप्ट द्वारा खींचा जा सकता है) तो एक जोखिम है कि एक jQuery ऑब्जेक्ट को इंगित करने वाले वेरिएबल वास्तव में कुछ और इंगित करते हैं जिसका अर्थ है कि आपका कोड होगा एपीआई के रूप में तोड़ने के लिए आप काम नहीं कर रहे हैं।

यह कोड क्या करता है वैश्विक jQuery फ़ंक्शन (जो किसी भी अन्य लाइब्रेरी से टकराव नहीं करता है) का उपयोग करता है, जिसमें पैरामीटर के रूप में मुख्य jQuery ऑब्जेक्ट प्राप्त करने वाला एक अज्ञात फ़ंक्शन पारित किया जाता है। चूंकि यह पैरामीटर फ़ंक्शन पर स्कॉप्ड किया गया है और वैश्विक रूप से नहीं, फ़ंक्शन के बाहर कुछ भी इसमें हस्तक्षेप नहीं कर सकता है, और आप ज्ञान में सुरक्षित जानकारी दे सकते हैं कि यह केवल एक jQuery ऑब्जेक्ट होगा जब तक कि आप इसे स्वयं ओवरराइड न करें।

3

Failsafe बस इस संभावना का जिक्र कर रहा है कि कुछ अन्य कोड या लाइब्रेरी $ var नाम के रूप में उपयोग करने का प्रयास कर सकती है। यह बहुत कम संभावना है कि एक और लाइब्रेरी jQuery नाम का उपयोग करेगी, इसलिए किसी फ़ंक्शन में सब कुछ encapsulating और arquemnt ($) के रूप में jquery पास करके, आप $ का उपयोग करने के लिए सुरक्षित हैं।

4

धारणा प्लगइन बनाने के दौरान संबंधित है, जब आप उदाहरण के लिए यह सुनिश्चित नहीं कर सकते कि $jQuery ऑब्जेक्ट के लिए उपनाम है। असफल तरीके से या तो सीधे jQuery का उपयोग करना है, या इसे बंद करने में लपेटना है यदि आप अपने प्लगइन कोड में $ का उपयोग करने में सक्षम होना चाहते हैं:

(function($){ 
    // here code can always use $ as n alias for jQuery, regardless if the user 
    // has repointed $ to something else. 
})(jQuery); 
संबंधित मुद्दे