我经常在一些Jquery插件中看到
$('#foo').myPlugin({
foo: 'bar',
bar: 'foo'
});
我在谈论.myPlugin()部分中的{}。我经常看到像
这样的匿名函数.click(function(){
});
但上面的语法看起来不一样
感谢您的帮助!
答案 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的映射。