2010-05-07 132 views
2

我看到经常在一些jQuery插件这是什么jQuery语法?

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

我在.myPlugin()部分讲的是{}。我看到经常匿名的功能,如

.click(function(){ 
}); 

,但上面的语法不同

感谢您的帮助看起来!

回答

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,那么很难为这些假命名参数提供任何“向前看”功能,并且参数的任意排序可能会导致某种程度的混乱从长远来看。

+0

非常感谢配偶:) – allaire 2010-05-07 19:11:24

0

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

2

这是一个JavaScript对象字面量。它是JavaScript语言的一部分(不专用于jQuery)。 JavaScript对象本质上是名称和值的映射;名称和值由冒号分隔,并且这些对之间用逗号分隔。整件事情都包裹在一对大括号中。

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

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

你以后可以做这样的事情:

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

甚至:

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

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