Prend pas pour argent comptant ma réponse, mais je dirais, du moins parceque c'est le cas avec les parseurs XML de Microsoft, que par exemple, pour TabNodes, il ne s'agit pas d'un Array, mais d'une collection.
Par essence, une collection, on est censé utiliser une méthode (ici "item(int index)" ) pour en récupérer un élément. En effet, un array, dans un langage de bas niveau, l'index n'est pas à proprement parler l'index d'un élément dans le tableau, mais la valeur de l'offset à appliquer à la taille d'un élément du tableau pour accéder à son nième élément.
Une collection pouvant avoir des trous, et représenter en mémoire des éléments non séquenciels et de taille variables, on différencie donc la syntaxe.
Dans les langages de plus haut niveau, une collection est généralement indexable, donc supporte aussi la syntaxe "array-like" pour accéder à un élément.
Pour moi, la différence vient de là.
Dans le cas d'une collection indexable, la syntaxe "[int index]" est juste un alias de ".item(int index)". Logiquement, il n'y a donc rigoureusement aucune différence si ce n'est sémantique. Je trouve la syntaxe via indexeur plus lisible, car on sait vraiment qu'on est en train d'accéder à un index, alors que .item() peut parfaitement avoir été surchargé pour effectuer une oppération toute autre.
En revanche, elle peut poser problème, car prête à confusion avec un array, et on peut par exemple être tenté d'utiliser la méthode ".sort()" qui est propre à un array en JS alors qu'elle n'existe pas dans une collection.
PS : Et logique que tu ne trouves pas ".item()" dans la doc sur les array, puisqu'il s'agit d'une collection
Les langages très haut niveau comme le JS peuvent parfaitement implémenter les array comme une surcouche aux collections. En effet, en l'absence de gestion mémoire "à la main" comme en C, un array en JS doit de toute façon se comporter en mémoire comme une collection (gérer les trous, les objets de taille variable, etc.)
Du coup ça ne me surprends effectivement pas que ".item()" soit disponible aussi sur un "vrai" array avec certains interpréteurs JS.
Message édité par MagicBuzz le 19-02-2008 à 11:00:30