什么是这个jquery语法?

时间:2010-05-07 17:38:29

标签: jquery parameters function

我经常在一些Jquery插件中看到

    $('#foo').myPlugin({
    foo: 'bar',
            bar: 'foo'
});

我在谈论.myPlugin()部分中的{}。我经常看到像

这样的匿名函数
.click(function(){
});

但上面的语法看起来不一样

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

这是一个对象。这种表示法用于模拟named arguments - JS无法原生地执行AFAIK。

它允许无限扩展其他参数,而不必在函数声明中声明它们:

function myfunc(args)  { }  
vs.
function myfunc(duration, opacity, width, height, speed)  { }

- 最重要的是 - 它允许任意排序参数:

{"duration": "0.5",
 "width": 300,
 "speed": 2 }

看到尽可能多的JS开发人员在IDE的上下文中工作(使用“预见”显示预期的函数参数),这是一件非常方便的事情,因为您不必记住订单哪个参数来自。

这样做的缺点是,如果一个IDE,那么很难为这些伪命名参数提供任何“预见”功能,并且参数的任意排序可能导致从长远来看,有一定程度的混乱。

答案 1 :(得分:2)

这是一个JavaScript Object文字。它是JavaScript语言的一部分(不是特定于jQuery)。 JavaScript对象本质上是名称和值的映射;名称和值由冒号分隔,并且这些对用逗号分隔。整件事用一对花括号包裹着。

所以,如果你做了这样的事情:

var obj = { foo: 'bar', name: 'value' };

您可以稍后执行以下操作:

alert(obj.foo); //alerts "bar"

甚至:

alert(obj['foo']); //also alerts "bar"

在这种情况下,对象将作为参数传递给myPlugin()函数。

答案 2 :(得分:0)

这只是一个函数调用,其中arg实际上是params的映射。