【问题标题】:what's this jquery syntax?这是什么jQuery语法?
【发布时间】:2010-05-07 17:38:28
【问题描述】:
我在一些 Jquery 插件中经常看到这种情况
$('#foo').myPlugin({
foo: 'bar',
bar: 'foo'
});
我说的是 .myPlugin() 部分中的 {}。我经常看到像
这样的匿名函数
.click(function(){
});
但上面的语法看起来不一样
感谢您的帮助!
【问题讨论】:
标签:
jquery
parameters
function
【解决方案1】:
它是一个对象。这种表示法用于模拟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,则很难为这些假命名参数提供任何“前瞻”功能,并且参数的任意顺序可能导致从长远来看,一定程度的混乱。
【解决方案2】:
这是一个 JavaScript 对象字面量。它是 JavaScript 语言的一部分(不特定于 jQuery)。 JavaScript 对象本质上是名称和值的映射;名称和值用冒号分隔,对用逗号分隔。整个东西被一对花括号包裹着。
所以,如果你做了这样的事情:
var obj = { foo: 'bar', name: 'value' };
你以后可以这样做:
alert(obj.foo); //alerts "bar"
甚至:
alert(obj['foo']); //also alerts "bar"
在这种情况下,对象作为参数传递给 myPlugin() 函数。
【解决方案3】:
这只是一个函数调用,其中 arg 实际上是参数的映射。