2010-05-07 7 views
2

Je vois que très souvent dans certains plugins Jqueryquelle est cette syntaxe jquery?

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

Je parle de la {} dans la partie .myPlugin(). Je vois souvent des fonctions tout à fait anonymes comme

.click(function(){ 
}); 

mais la syntaxe ci-dessus est différent

merci pour votre aide!

Répondre

4

C'est un objet. Cette notation est utilisée pour simuler named arguments - quelque chose que JS ne peut pas faire nativement AFAIK.

Il permet l'extension infinie des arguments supplémentaires sans avoir à les déclarer dans la déclaration de fonction:

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

et - le plus important - il permet de commander arbitraire d'arguments:

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

Voyant que de nombreux développeurs JS ne travaillent pas dans le contexte d'un IDE (qui afficherait les paramètres de fonction attendus en utilisant "look-ahead"), c'est une chose très pratique, car vous n'avez pas à mémoriser l'ordre de paramètre vient quand.

L'inconvénient est que s'il est un IDE, il est très difficile de fournir une fonctionnalité « look-ahead » pour ces faux arguments nommés, et l'ordre arbitraire d'arguments peut conduire à un certain degré de chaos à long terme.

+0

Merci beaucoup mate :) – allaire

0

C'est juste un appel de fonction où arg est réellement une carte de params.

2

C'est un littéral d'objet JavaScript. Cela fait partie du langage JavaScript (pas spécifique à jQuery). Les objets JavaScript sont essentiellement des cartes de noms et de valeurs; le nom et la valeur sont séparés par deux points, et les paires sont séparées les unes des autres par des virgules. Le tout est enveloppé dans une paire d'accolades.

Donc, si vous avez fait quelque chose comme ceci:

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

Vous pouvez faire plus tard quelque chose comme ceci:

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

ou même:

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

Dans ce cas, la L'objet est passé en paramètre à la fonction myPlugin().

Questions connexes