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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Javascript] Tableau de fonctions et Array.prototype

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Javascript] Tableau de fonctions et Array.prototype

n°2023638
SMGbab16
Posté le 19-09-2010 à 06:12:10  profilanswer
 

Bonjour,
 
Voila il y a un truc que je ne comprend pas en javascript:
 

<html>
<head></head>
<body>
 <script>
  Array.prototype.lol = function() {
   alert('lol');
  };
   
  var functions = [];
  functions.push(function() { });
  functions.push(function() { });
   
  for(var i in functions) {
   functions[i]();
  }
 </script>
</body>
</html>


Pourquoi dans ce code le alert('lol') s'affiche alors que la fonction 'lol' n'est jamais appeler ?
Je me contente de faire un tableau de fonctions puis de les appeler alors pourquoi cette fichu fonction 'lol' est appeler ?
 
Le problème est identique sur Chrome et Firefox.
 
Merci d'avance pour votre aide ^^


Message édité par SMGbab16 le 19-09-2010 à 06:24:12
mood
Publicité
Posté le 19-09-2010 à 06:12:10  profilanswer
 

n°2023658
gatsu35
Blablaté par Harko
Posté le 19-09-2010 à 10:16:32  profilanswer
 

Bah tu est encore resté bloqué au PHP je crois.
 
Un tableau c'est un objet indexé pour simplifier.
Donc pour parcourir un tableau on le parcours avec un index  
[code]
for (var i=0; i<functions.length; i++) {
   functions[i]();
}
[code]
 
En utilisant for in, tu parcours le tableau comme un objet, donc tu parcours toutes ses propriétés, du coup tu vas même exécuter les méthodes du prototype dont map, filter, sort, etc, et pire encore, tu exécute des propriétés comme si c'était des fonctions
tableau.length().
 
Pour bien comprendre, tu installes firebug, tu ouvres la console, et tut regardes toutes les erreurs que ton code va générer.
 


---------------
Blablaté par Harko
n°2023769
SMGbab16
Posté le 20-09-2010 à 08:59:26  profilanswer
 

Effectivement je pensais que le for..in était l'équivalent du foreach.
 
Mais le problème était un peu plus vicieux que ce que tu laisse entendre car ça n’exécutais que les méthodes que j'ajoutais moi même au prototype et pas les méthodes ou propriétés natives.
 
Entre temps j'ai fait quelques recherches et je suis tomber sur ca: https://developer.mozilla.org/en/Ja [...] wnProperty
"unlike the in operator, this method does not check down the object's prototype chain."
 
Ça peut être utile pour itérer sur un Object (qui sert comme tableau associatif ou map)
Car pour itérer sur un Object on utilise bien for..in cette fois et on retrouve le même problème si on a ajouter des méthodes a Object.prototype
 
En tout cas merci pour ton aide ^^


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

  [Javascript] Tableau de fonctions et Array.prototype

 

Sujets relatifs
Découper une chaîne avec un tableau de longueur en paramComment faire pour créer un tableau interactif?
tableau JSP / ServletJavascript dans une iframe
comment lire tableau html en javascript ?Fonction Javascript pour slideup / slidedown multiples
Les tableau en Javaproblème réalisation tableau périodique tkinter
Tableau 2D, à 1 dimension connue et l'autre inconnue... 
Plus de sujets relatifs à : [Javascript] Tableau de fonctions et Array.prototype


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