我在一些生产代码中偶然发现了以下javascript代码段。它适用于Chrome& IE,但它不是我以前见过的语法。特定代码段使用jquery vegas插件在计时器上旋转一些图像背景,并在图像上覆盖透明像素网格。
这是生产中的代码。
$(function () {
$.vegas('slideshow', {
delay: 10000,
backgrounds: [
{ src: '@Url.Content("~/Images/1.jpg")', fade: 3000 },
{ src: '@Url.Content("~/Images/2.jpg")', fade: 3000 }
]
})('overlay', { //<<<----- LOOK AT THOSE TOUCHING PARENTHESES
src: '@Url.Content("~/Content/Overlays/02.png")'
});
});
这似乎与更“可读”的形式相同。
$(function () {
$.vegas('slideshow', {
delay: 10000,
backgrounds: [
{ src: '@Url.Content("~/Images/1.jpg")', fade: 3000 },
{ src: '@Url.Content("~/Images/2.jpg")', fade: 3000 }
]
})
$.vegas('overlay', {
src: '@Url.Content("~/Content/Overlays/02.png")'
});
});
所以看来在第二对括号中传递第二组参数,第二次使用第二组参数重新执行相同的方法,但是我很难找到搜索这个的术语javascript语法的类型,因为它不是我在其他语言中看到的东西。
任何人都可以解释。
答案 0 :(得分:3)
这是method chaining的一种形式,但该方法返回一个方法而不是一个对象。
方法链接的常用形式是返回对象(this
),以便您可以在同一对象上调用另一个方法:
$.vegas( ... ).vegas( ... );
当方法返回方法而不是对象时,可以再次调用它而不指定名称:
$.vegas( ... )( ... );
答案 1 :(得分:2)
JavaScript中的匿名函数通常使用相同的语法。我相信在声明一个函数之后你可以使用()
来调用它看起来$ .vegas()被链接或再次调用。
如果$ .vegas()返回自己,那么你可以用这种方式链接对它的调用。
也许搜索链接函数调用。
答案 2 :(得分:2)
你有这样的事情:
$.vegas()()
这似乎通过$ .vegas()返回函数值,然后又调用函数。
例如。如果$ .vegas()返回something
,那么它现在会调用如下:something()