Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3082 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] fonction item()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS] fonction item()

n°1688080
ANViL
yep...definitely ♫
Posté le 18-02-2008 à 20:19:02  profilanswer
 

Hi all,
 
Je vois souvent ce genre de code utilisé pour l'accès à l'élément i d'un tableau
 

Code :
  1. TabNodes.item(i).firstChild (...)


 
J'utilise d'habitude le très classique
 

Citation :

TabNodes[i]


 
Est-ce plus correct d'utiliser la méthode item(i) ?
 
P.S: cette méthode fonctionne mais pourtant je n'en vois aucun trace dans les références JS (ex: http://developer.mozilla.org/en/do [...] ay_methods )  :??:


Message édité par ANViL le 18-02-2008 à 20:19:30
mood
Publicité
Posté le 18-02-2008 à 20:19:02  profilanswer
 

n°1688232
MagicBuzz
Posté le 19-02-2008 à 10:52:36  profilanswer
 

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
n°1688880
ANViL
yep...definitely ♫
Posté le 19-02-2008 à 21:23:21  profilanswer
 

Merci pour ta réponse  :)  
 
Je n'avais pas réalise que les NodeList avaient plus de sens d'être implémentées en tant que collection.
 
Une petit recherche sur mozdev m'a également renvoyé cette explication
 

Citation :

...On utilise également anchorTags[i], la même syntaxe que celle qui est utilisée en JavaScript pour accéder au ie élément d'un tableau. La « manière DOM » indépendante du langage pour accéder à un élément dans une NodeList est d'utiliser la méthode item(), définie sur l'interface NodeList : anchorTags.item(1).href. Mais la plupart des implémentations JavaScript permettent d'utiliser la syntaxe de tableau, plus simple, et c'est ce que la plupart des gens utilisent en réalité.


 
 :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] fonction item()

 

Sujets relatifs
la fonction CHMODquelle page appele ma fonction
[VBS] Pb avec la fonction DateCreated[PHP] Fonction date()
fonction de fonction ???Passer une classe à une fonction dans une méthode.
[Résolu] Aide requête SQL: item n'appartenant pas à une catégorieScript - Renommer ue photo en fonction de de la date
lancer une fonction php en cliquant sur un boutonlancer une fonction php à partir d'un bouton ("button")
Plus de sujets relatifs à : [JS] fonction item()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR