[JS] Exécuter une fonction à partir de son nom en variable chaîne

Exécuter une fonction à partir de son nom en variable chaîne [JS] - HTML/CSS - Programmation

Marsh Posté le 07-03-2007 à 09:27:48    

Bonjour,
 
Je n'ai pas trouvé l'info sur Google alors je me permets de poser ma question ici : est-il possible d'exécuter une fonction JavaScript à partir de son nom dans une chaîne de caractères ?
 
Merci !

Reply

Marsh Posté le 07-03-2007 à 09:27:48   

Reply

Marsh Posté le 07-03-2007 à 10:08:25    

function fonctionamoi() {
  alert("blabla" );
}
var nomdelafonction = "fonctionamoi";
eval(nomdelafonction+"()" );

Reply

Marsh Posté le 07-03-2007 à 11:14:32    

hummmm, merci :D :jap:

Reply

Marsh Posté le 07-03-2007 à 15:30:03    

gatsu35 a écrit :

function fonctionamoi() {
  alert("blabla" );
}
var nomdelafonction = "fonctionamoi";
eval(nomdelafonction+"()" );


Heuu ouais ou plus simplement
 

Code :
  1. function myFunc() {
  2.    alert("blabla" ):
  3. }
  4.  
  5. var functionName = "myFunc";
  6.  
  7. window[functionName]();


non parce que je rappelle qu'eval say le mal [:aloy]


Message édité par masklinn le 07-03-2007 à 17:01:34

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 07-03-2007 à 16:34:38    

Ah oui j'avais oublié
 
/me retourne avec son code caca

Reply

Marsh Posté le 07-03-2007 à 17:07:46    

nickel :D merci !
J'avoue que j'ai pas trouvé les bons mots-clés pour avoir cette astuce sur google... :/

Reply

Marsh Posté le 07-03-2007 à 17:35:24    

Le MDC est une très bonne base de départ quand tu cherches ce genre de chose:
http://developer.mozilla.org/en/do [...] _1.5_Guide
Tu peux commencer par lire tout le chapitre sur l'objet function :o
 

Reply

Marsh Posté le 07-03-2007 à 18:08:25    

anapajari a écrit :

Le MDC est une très bonne base de départ quand tu cherches ce genre de chose:
http://developer.mozilla.org/en/do [...] _1.5_Guide
Tu peux commencer par lire tout le chapitre sur l'objet function :o


Oui enfin là c'est surtout savoir que les objets sont aussi des hashes et que tout ce qui est déclaré en global est en fait un attribut de l'objet window.
 
Ensuite seulement est nécessaire la connaissance du fait qu'en JS une fonction est un objet comme un autre et peut donc être manipulée comme on le veut, son nom n'étant finalement qu'accessoire, une sorte de raccourci réflexif :o


Message édité par masklinn le 07-03-2007 à 18:08:38

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 08-03-2007 à 08:50:02    

Pas d'accord :o ( Pas sur le fond technique mais sur le forme "la doc" lui aurait servi à rien )
Généralement pour en arriver à faire ce genre d'ignominie, c'est qu'il y a une merde dans la conception. Et en lisant la doc il aurait vu tout les autres méthodes pour déclarer une fonction ( var a = function , var a = new Function , ...) ce qui aurait pu lui donner de bonnes idées.

Reply

Marsh Posté le 08-03-2007 à 10:53:39    

anapajari a écrit :

Pas d'accord :o ( Pas sur le fond technique mais sur le forme "la doc" lui aurait servi à rien )
Généralement pour en arriver à faire ce genre d'ignominie, c'est qu'il y a une merde dans la conception. Et en lisant la doc il aurait vu tout les autres méthodes pour déclarer une fonction ( var a = function , var a = new Function , ...) ce qui aurait pu lui donner de bonnes idées.


Oui heu en l'occurence la seconde c'est de la merde en barre hein :o
 
Et si on veut vraiment savoir tout ce qu'on peut faire en JS, imho il n'y a qu'un moyen: Javascript The Definitive Guide 5e édition


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 08-03-2007 à 10:53:39   

Reply

Marsh Posté le 08-03-2007 à 11:29:21    

masklinn a écrit :

Oui heu en l'occurence la seconde c'est de la merde en barre hein :o


ça dépend, ça peut être utile d'avoir une fonction qu'est évaluée à chaque appel [:spamafote]
 

Reply

Marsh Posté le 08-03-2007 à 12:12:09    

anapajari a écrit :

ça dépend, ça peut être utile d'avoir une fonction qu'est évaluée à chaque appel [:spamafote]


Là elle est pas évaluée à chaque appel elle est générée à chaque appel, et tu peux avoir la même chose en plus rapide avec une fonction anonyme normale


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 08-03-2007 à 13:22:00    

masklinn a écrit :

Là elle est pas évaluée à chaque appel elle est générée à chaque appel, et tu peux avoir la même chose en plus rapide avec une fonction anonyme normale


 :jap: Tu chipottes mais tu as a raison puisque c'est l'objet Function qui est evalué et pas la fonction elle-même.
(Faut vraiment faire attention au choix des mots avec toi :o )

Reply

Marsh Posté le 08-03-2007 à 20:09:58    

wow j'ai déclenché une polémique :D

Reply

Marsh Posté le 09-03-2007 à 08:44:45    

nan pas une polémique, sur ce forum ça s'appele une discussion avec Masklinn ;)

Reply

Marsh Posté le 09-03-2007 à 19:11:28    

:D

Reply

Marsh Posté le 09-03-2007 à 19:20:29    

J'vous merde tous [:thalis]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed