帮助理解Javascript异常函数声明语法

时间:2011-06-08 06:34:53

标签: javascript jquery jquery-plugins

我正在尝试理解ColorBox背后的Javascript / jQuery。某些形式的语法在Google上搜索有点难,因为它们描述起来有点冗长。我无法理解以下内容:

publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {

所以我假设正在创建一个名为publicMethod的新函数,但是我们怎么做,但除了第一个等号(“=”)之外我什么都不懂。

正常的函数声明如下所示:

function publicMethod(options, callback) {

所以如果有人能帮我理解语法,我会非常感激。

3 个答案:

答案 0 :(得分:1)

在:

$.fn[colorbox]
  • $是一个无用的非描述性变量名称。它包含一个对象。
  • $.fn访问该对象的fn属性。
  • fn[colorbox]访问该对象的属性,该对象的名称与colorbox中存储的字符串相匹配

但首先定义=的右侧,因此在将该值分配给publicMethod之前,它会将$[colorbox]的值分配给$.fn[colorbox]

...在此之前,它会分配(到那里)一个函数。

function () {}定义了一个匿名函数并将其传递给左侧(因此它存储在=另一侧的任何内容中)

答案 1 :(得分:1)

在JavaScript中,函数与其他对象处于同一级别 - 您可以将它们分配给变量,并将它们作为参数传递。

通常,您会以这种方式声明一个函数:

function SomeFunc(arg1, arg2) { /* etc etc */ }

一种等效的方式:

var SomeFunc = function(arg1, arg2) { /* etc, etc */ }

...因为,如上所述,函数本身是可以分配或传递的值。

许多库将接受函数作为它们自己函数的参数,在适合它们的时间运行传递的函数(或者在其他地方传递它们,或者任何其他变量)。通常这是回调。当函数作为参数传递时,实际上并不需要给它们一个自己的名字,因此下面的工作就完成了:

SomeLibrary.doSomethingThenCallback(function(arg1, arg2) {
    // the doSomethingThenCallback function will decide when, if ever,
    // to run this, or pass it on somewhere else, or whatever else would
    // be done with any other argument value.
});

答案 2 :(得分:0)

function publicMethod(options, callback) {}几乎与var publicMethod = function(){options, callback}完全相同但不完全相同。在第一种情况下,您创建名为publicMethod的函数,在第二种情况下,您创建匿名函数并将其分配给publicMethod变量。除了分配之外,只需保存此函数以进一步用作API方法。