2011-08-03 10 views
6

है मैं सिर्फ इस कोडक्या typeof (jQuery)

console.log(typeof(jQuery))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>

यह अलर्ट function, जिसका अर्थ है typeof jQuery function है की कोशिश की।

मेरा सवाल है, jQuery का सटीक प्रकार क्या है? यदि यह कार्य करता है, तो इसमें jQuery.browser और jQuery.ajax जैसी गुण कैसे हैं?

+0

मेरा मानना ​​है कि सभी जावास्क्रिप्ट 'ऑब्जेक्ट्स फ़ंक्शन हैं। जब तक आप इसका उपयोग नहीं करते हैं तब तक जावास्क्रिप्ट ओओ अजीब तरह का होता है। –

+0

क्योंकि ऑब्जेक्ट्स फ़ंक्शन और फ़ंक्शंस जावास्क्रिप्ट में ऑब्जेक्ट्स हैं। – deceze

+1

बंद करें, @ मैट्ट्यू, सभी कार्य वस्तुएं हैं, न कि दूसरी तरफ। –

उत्तर

6

jQuery ऑब्जेक्ट पर लागू होने पर टाइपफ़ो ऑपरेटर स्ट्रिंग "function" देता है। असल में इसका मतलब है कि jQuery एक फ़ंक्शन है।

लेकिन टाइपिंग प्रकार वहां बंद हो जाता है। स्थाई रूप से टाइप की गई भाषाओं के विपरीत, किसी फ़ंक्शन के प्रकार की गणना करते समय पैरामीटर, संख्या, मोड और पैरामीटर के प्रकार को ध्यान में नहीं रखा जाता है। जावास्क्रिप्ट में, यह सिर्फ एक "समारोह" है।

जब आप जावास्क्रिप्ट में एक समारोह बनाने के लिए, समारोह वस्तु आपके द्वारा बनाए गए दो गुण, length और prototype दिया जाता है, और अपने प्रोटोटाइप Function.prototypeapply और call की तरह तो यह विरासत में मिला है गुण को तैयार है।

और जैसा कि अन्य ने पहले ही उत्तर दिया है, अपनी खुद की संपत्तियों को जोड़ने में संकोच न करें। एक समारोह सिर्फ एक वस्तु है।

लेकिन "प्रकार" के बारे में सावधान रहें। तकनीकी रूप से केवल SIX जावास्क्रिप्ट में प्रकार हैं: शून्य, अपरिभाषित, बूलियन, संख्या, स्ट्रिंग, और ऑब्जेक्ट। तो आपके प्रश्न का असली जवाब, jQuery का सटीक प्रकार क्या है .... वास्तव में ... ड्रम्रोल .... ऑब्जेक्ट

+0

यदि jQuery वास्तव में एक ऑब्जेक्ट है, जो फ़ंक्शन का सबसेट है, और ऑब्जेक्ट वैध प्रकार है, तो क्यों नहीं 'jQuery टाइप करें,' वापसी 'ऑब्जेक्ट "? – Luke

+0

क्योंकि जावास्क्रिप्ट टाइप पदानुक्रमों की परवाह नहीं करता है।प्रकार वस्तुओं की कोई धारणा नहीं है, न ही सुपरटेप या उपप्रकार। 'Typeof' ऑपरेटर _string_ देता है, _type_ नहीं। भाषा संदर्भ में परिभाषित चीजें हैं; आप वास्तव में कोड में उनके साथ वास्तव में सौदा नहीं करते हैं, आप बस 'टाइपोफ़' ऑपरेटर से एक स्ट्रिंग वापस प्राप्त करते हैं। [ऑपरेटर का विवरण यहां दिया गया है] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)। आप देख सकते हैं कि इसका बहुत अर्थ नहीं था। यह सिर्फ वही करता है जो करता है। –

5

एक फ़ंक्शन एक ऑब्जेक्ट है और इसमें जावास्क्रिप्ट में गुण हो सकते हैं।

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function देखें, कुछ फ़ंक्शंस डिफ़ॉल्ट रूप से एक फ़ंक्शन में हैं (और अतिरिक्त गुण जोड़े जा सकते हैं)।

3

बस इसे अपने आप को क्या करने की कोशिश करते हैं और आप जान जाएंगे:

function f() { 
} 

f.prop = '123'; 

alert(f.prop); 

jQuery एक function है, लेकिन निश्चित रूप से, यह भी आपत्ति है, कि call() की तरह खुद कार्यों में शामिल है, और साथ ही प्रॉपर्टी हो सकती ।

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