2010-12-05 28 views
4

Je fais un objet JavaScript avec la notation littérale, mais je ne suis pas sûr de savoir comment faire l'objet recevoir des paramètres comme ceci:Faire un objet JavaScript en utilisant la notation littérale

hi.say({title: "foo", body: "bar"}); 

au lieu de hi.say("foo", "bar");.

Code actuel:

var hi = { 
    say: function (title, body) { 
     alert(title + "\n" + body); 
    } 
}; 

La raison pour laquelle je veux c'est parce que je veux que les gens soient en mesure de sauter le titre et vient de mettre le corps, et faire de même pour de nombreux autres paramètres.

Voilà pourquoi je besoin de quelque chose comme la façon dont nous pouvons utiliser les paramètres de fonctions jQuery {parameter:"yay", parameter:"nice"}

post-scriptum Je suis également ouvert à la modification de la méthode actuelle - en gardant à l'esprit qu'il y aurait beaucoup de paramètres, certains requis et d'autres facultatifs, et qui ne peuvent pas être commandés d'une manière spécifique.

Répondre

6

Il n'y a pas de syntaxe des paramètres spéciaux pour cela, il suffit de faire la fonction prendre un seul paramètre, et ce sera un objet:

var hi = { 
    say: function(obj) { 
    alert(obj.title + "\n" + obj.body); 
    } 
} 
0
var hi = { 
    say: function(opts) { 
    var title = (opts.title)?opts.title:"default title"; 
    var body = (opts.body)?opts.body:"default body"; 

    // do whatever with `body` and `title` just like before 
    // ... 
    } 
}; 
1

Quelque chose comme cela devrait fonctionner:

var hi = { 
    say: function(options) { 
     if (options.title) alert(options.title + "\n" + options.body); 
     else alert('you forgot the title!'); 
    } 
} 


hi.say({ //alerts title and body 
    "title": "I'm a title", 
    "body": "I'm the body" 
}); 
hi.say({ //alerts you for got the title! 
    "body": "I'm the body." 
});