2011-08-03 21 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.browserjQuery.ajax性能?

+0

我相信所有的JavaScript對象都是函數。 Javascripts OO是有點奇怪,直到你習慣它。 –

+0

因爲對象是函數,函數是Javascript中的對象。 – deceze

+1

關閉,@Matthew,所有功能都是對象,而不是相反。 –

回答

6

將typeof運算符應用於jQuery對象時將返回字符串"function"。基本上這意味着jQuery是一個功能。

但在那裏的打字排序。與靜態類型語言不同,計算函數類型時不考慮參數的數量,順序,模式和類型。在JavaScript中,它只是一個「功能」。

當您創建一個JavaScript功能,您可以創建函數對象給出了兩個屬性,lengthprototype的,其原型設置爲Function.prototypeapplycall所以它繼承屬性。

正如其他人已經回答,隨時添加您自己的屬性。一個函數只是一個對象。

但要小心「類型」。技術上,JavaScript中只有SIX類型:空,未定義,布爾值,數字,字符串和對象。所以真正的回答你的問題,jQuery的確切類型是什麼......實際上......鼓槌.... 對象

+0

如果jQuery實際上是一個對象,它是函數的一個子集,而object是有效類型,那麼爲什麼'typeof jQuery;'返回「object」? – Luke

+0

因爲JavaScript不關心類型層次結構。沒有類型對象的概念,也沒有超類型或子類型。 'typeof'運算符返回_string_,而不是_type_。類型是在語言參考中定義的東西;你並沒有真正用代碼處理它們,你只需從'typeof'運算符得到一個字符串。 [這裏是運營商的描述](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)。你可以看到這並不意味着很有意義。它只是做它做的。 –

3

只是儘量自己做,你就會明白:

function f() { 
} 

f.prop = '123'; 

alert(f.prop); 

jQueryfunction但是,當然,它也反對,包含自己的功能,如call()並且可以有屬性,以及。

相關問題