2010-05-07 129 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()函數。