2011-06-09 34 views
0

我目前正在嘗試瞭解多麼受人矚目的燈箱,ColorBox的作品,以便我可以嘗試進行開發。然而,我正在努力處理代碼中的一些概念。以下是我在哪裏卡住:瞭解什麼似乎是一種方法的實例化

我已經被宣佈了以下功能:

publicMethod = function() {…} 

然後畢竟這個功能:

publicMethod.init = function() {…} 

終於在腳本結束下面的命令運行:

$(publicMethod.init); 

現在我不是100%確定這最後一條命令在做什麼,我認爲它是instanciating的方法。但我認爲你應該可以這樣做:

publicMethod.init;

爲什麼它包裹在jQuery括號內?這是什麼結果?

此外,如果我正確地說它是實例publicMethod.init,那麼這是否意味着publicMethod是在publicMethod.init之前先實例化的?

+0

如果它是這樣封裝的,它可能會返回對DOM中某些東西的引用。函數返回什麼? – minikomi 2011-06-09 00:39:11

+1

@minikomi,就像@davin所說的,將一個函數傳遞給'$()'添加一個文檔就緒事件處理程序;請注意,在OP的代碼中不調用'init'。 – Jacob 2011-06-09 00:48:16

+0

我明白了。感謝您指出了這一點。 – minikomi 2011-06-09 00:58:08

回答

3

沒見過的代碼,但是從你的描述:

publicMethod = function() { ... }

聲明並實例化一個名爲publicMethod函數對象。這明顯發生在聲明publicMethod.init之前,因爲後者是對象publicMethodinit屬性,所以對象publicMethod必須存在,以使其具有增強的屬性。

關於$(publicMethod.init),該行將執行帶有函數參數的jquery函數(不知道「wrapping」是什麼意思,這就像執行jQuery(publicMethod.init)這是一個函數調用)。

也許它會看起來更像這樣:$(function(){ ... })或類似的幾乎等效的形式:$(document).ready(function(){ ... })

當jquery函數$收到一個函數作爲它的參數時,它添加了一個DOM就緒處理程序,這是一個在文檔準備就緒時會執行的函數。這對你粘貼的代碼來說是非常有意義的,因爲它通過了init方法成爲當文檔準備就緒時執行的方法。

+0

當'$(publicMethod.init)'運行時''publicMethod = function(){...}'上的花括號'{}'之間的代碼會被處理嗎? – McShaman 2011-06-09 02:43:12

+0

@Tim,不,除非明確調用'publicMethod()'。從你展示的代碼中,它不一定被執行。 – davin 2011-06-09 08:39:42

相關問題