2010-03-19 16 views
5

अगर हम http://code.jquery.com/jquery-latest.js पर नवीनतम jQuery स्रोत को देखो हम निम्न देखें:jQuery अपने कन्स्ट्रक्टर फ़ंक्शन कार्यान्वयन में ऐसा क्यों करता है?

var jQuery = function(selector, context) { 
    // The jQuery object is actually just the init constructor 'enhanced' 
    return new jQuery.fn.init(selector, context); 
} 

जावास्क्रिप्ट में नए कीवर्ड की मेरी समझ अनिवार्य रूप से जावास्क्रिप्ट समारोह एक खाली वस्तु {} गुजरता है और समारोह के माध्यम से उस पर सामान सेट this.blah

मेरी समझ से new.call/.apply आदि से भिन्न है .. इसमें वापसी वस्तु के प्रोटोटाइप को फ़ंक्शन के सेट पर भी सेट किया गया है। तो वापसी मूल्य में प्रोटोटाइप होना चाहिए जो jQuery.prototype.init.prototype (या jQuery.fn.init.prototype) जैसा ही होना चाहिए। हालांकि, जो मैं अपने प्रोटोटाइप को देखता हूं उससे jQuery.prototype पर सेट किया गया है, इस प्रकार सेट पर काम करने के लिए उपलब्ध सभी आदेश।

यह क्यों है? मेरी समझ में मुझे क्या याद आ रही है?

उत्तर

1

यदि आप jQuery's code में और अधिक जानकारी आप इस लाइन पर ध्यान देंगे।

यहां कोई वास्तविक "जादू" नहीं किया जा रहा है, केवल मानक जावास्क्रिप्ट, हालांकि थोड़ा सा सामान्य रूप से इस्तेमाल किया जाने वाला तरीका है। यह jQuery के मामले में उपयोगी है क्योंकि लाइब्रेरी काफी लंबी है और इसमें अच्छी संरचना/पठनीयता शामिल है।

0

कि स्रोत फ़ाइल में, स्ट्रिंग के लिए खोज "init समारोह बाद में इन्स्टेन्शियशन के लिए jQuery प्रोटोटाइप दें" :-)

कोड सेट prototype (jQuery.prototype करने के लिए jQuery.fn.init के संदर्भ जो jQuery.fn मैं रूप में ही है सोच)। इसलिए निर्माता अपनी ही विधि हो सकता है

// Give the init function the jQuery prototype for later instantiation 
jQuery.fn.init.prototype = jQuery.fn; 

यह पठनीयता/संरचना उद्देश्यों के लिए है:

संबंधित मुद्दे