2011-06-09 38 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

相关问题