我正在尝试理解ColorBox背后的Javascript / jQuery。某些形式的语法在Google上搜索有点难,因为它们描述起来有点冗长。我无法理解以下内容:
publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
所以我假设正在创建一个名为publicMethod的新函数,但是我们怎么做,但除了第一个等号(“=”)之外我什么都不懂。
正常的函数声明如下所示:
function publicMethod(options, callback) {
所以如果有人能帮我理解语法,我会非常感激。
答案 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方法。