Plusieurs arguments contre objet d'options

Lors de la création d'une fonction JavaScript avec plusieurs arguments, je suis toujours confronté à ce choix: passer d'une liste d'arguments contre passer un objet d'options.

Par exemple je suis en train d'écrire une fonction pour mapper une nodeList à un tableau:

function map(nodeList, callback, thisObject, fromIndex, toIndex){
    ...
}

Je pourrais utiliser cette:

function map(options){
    ...
}

où les options est un objet:

options={
    nodeList:...,
    callback:...,
    thisObject:...,
    fromIndex:...,
    toIndex:...
}

Dont l'une est la méthode recommandée? Existe-il des lignes directrices pour savoir quand utiliser l'un contre l'autre?

[Mise à jour] Il semble y avoir un consensus en faveur de l'objet options, donc je voudrais ajouter un commentaire: une des raisons pour lesquelles j'ai été tenté d'utiliser la liste d'arguments dans mon cas était d'avoir un comportement cohérent avec le JavaScript intégré dans la gamme.méthode map.

  • La deuxième option vous donne les arguments nommés, ce qui est une bonne chose à mon avis.
  • Sont-ils facultatifs ou obligatoires arguments?
  • dans mon exemple, les trois derniers sont en option.
  • Parce que vos deux derniers arguments sont très similaires, si l'utilisateur est passé seulement l'un ou l'autre, tu n'avais jamais vraiment être en mesure de savoir qui était prévu. À cause de cela, vous seriez presque besoin d'arguments nommés. Mais je peux comprendre que vous voulez maintenir une API similaire à l'API native.
  • La modélisation d'après l'API native n'est pas une mauvaise chose, si votre fonction fait la même chose. Il s'agit de "ce qui rend le code plus readablae." Array.prototype.map a une API simple qui ne devrait pas laisser un semi-connu codeur déconcertant plus.
InformationsquelleAutor Christophe | 2012-10-10