2015-06-17 97 views
-8

我在下面的這段代碼中掙扎。爲什麼他們在函數scrollDepth()之前使用前綴jQuery?當我刪除前綴時會發生什麼?爲什麼他們在函數名前使用前綴jQuery?

<script src="jquery.scrolldepth.min.js"></script> 
<script> 
jQuery(function() { 
    jQuery.scrollDepth(); 
}); 
</script> 
+11

*當我刪除前綴時會發生什麼?*當你做了什麼? –

+1

@PraveenKumar jQuery是一個JavaScript庫。這不是一個功能。 – ElGavilan

+6

@ElGavilan:這都是。這也是變量的名稱,該變量持有對庫主對象的引用。這是一種超負荷的詞,現在我想到了。 – David

回答

2

scrollDepth是jQuery對象上的一個函數,所以它必須在jQuery對象上調用。 (該功能是this plugin,增加了功能的jQuery對象;它不是jQuery的本身的一部分。)

+2

可能是評論? –

+2

看起來像我們在我們中間的一個小人物 – jbutler483

+3

Downvote不是我的,但詳細說明「jQuery函數」和「jQuery對象」是否會使這個答案更模糊。 –

1

在此行中:

jQuery.scrollDepth(); 

jQuery「前綴」,你叫它是具有scrollDepth函數的對象的名稱。如果沒有引用該對象,引擎將不知道該在哪裏找到該函數。

並非所有函數都是全局函數(謝天謝地)。在面向對象的世界中,函數存在於特定的對象上。您需要引用該對象來調用其功能。

+0

***問題:**是jQuery OO嗎?* –

+6

@PraveenKumar:OO是一個大帳篷。 JavaScript是OO(核心),jQuery使用JavaScript的OO功能,所以從這個意義上說,jQuery是OO。 –

+0

啊,@ T.J.Crowder謝謝你的澄清!所以jQuery是OO! ':D' –

3

您可能熟悉$符號jQuery。這實際上是一個別名jQuery對象。所以,我們基本上有一個對象衛生組織的名字是jQuery,它包含了我們在jQuery的

使用
jQuery.each = function(){...} 
jQuery.ajax = function(){...} 
jQuery.makeArray = function(){...} 

現在,scrolldepth是它擴展了的jQuery插件的所有API方法API類似於上面

jQuery.scrollDepth = function(){...} 

的辦法,這就是爲什麼它被稱爲像jQuery.scrollDepth()

+0

哇......很好的解釋! ':D' –

+2

@PraveenKumar,謝謝!但說實話,即時解釋給自己比別人更多。他們說教學是最好的學習方式:) – AmmarCSE

+0

不,不,這是完全錯誤的。如果'scrollDepth()'是jQuery原型('jQuery.fn')的成員,那麼它必須在jQuery對象上調用(例如'jQuery(「something」)。scrollDepth()'),而不是直接'jQuery'本身。 –

相關問題