Comment passer les arguments d'une fonction à une autre ? [Résolu]

Signaler
Messages postés
732
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2007
-
Messages postés
278
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 décembre 2008
-
Bonjour




Comment faire passer les arguments d'une fonction à une autre ? Je m'explique : soit f1 et f2 deux fonctions. Dans le contexte suivant :
function f1()
    {
    f2(f1.arguments)
    }

function f2()
    {
    for (var i=0; i

12 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
je ne pensais même pas que cela marchait, et pourtant...

function t1()
{
 t2();
}
function t2()
{
 for ( var n=0;n<t1.arguments.length;n++)
 {
  alert(t1.arguments[n]);
 }
}

t1("a","b","c");

ça ne répond pas encore tout à fait à ce que tu 
   souhaites je présume... mais...
<hr />
                     Cordialement       Bul    [mon Site]    [M'écrire]
<hr />
Messages postés
732
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2007

Bonjour




"Pas encore tout à fait", mais quasiment quand-même. La solution que je viens de trouver, grâce à toi, sera :

function t1()
{
 t2();
}

function t2()
{
    if(t2.caller)
    {
    for ( var n=0; n<t2.caller.arguments.length;n++)
        {
        alert(t2.caller.arguments[n]);
        }
    }
    else
 
    for ( var n=0; n
  
}

t1("a","b","c");

(Le but n'était pas, tu l'aura compris, d'afficher les arguments, mais de pouvoir instancier des "sous-objets").

Merci beaucoup pour ton aide

Cordialement
Roro webDev
Messages postés
278
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 décembre 2008

function f1() {
    f2.apply(this, arguments)
}

function f2() {
}

Pourquoi notre PC fait-il toujours ce qu'on lui dit ... et pas ce qu'on veut ???
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,

function f2(b)
{
  for (var i=0; i
   ... bof ...

<hr />
            Cordialement          Bul       [mon Site]    [M'écrire]
<hr />
Messages postés
732
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2007

Bonjour




non, c'est pas ça

Cordialement
Roro webDev
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
ça fait ce qui est demandé ! même si je comprend bien
   que ce n'est pas comme ça que tu veuilles faire.
construire dans une variable : "f2(" + f1.arguments[#] + ")" ,
puis eval ( beurk ! ) ? ... re bof ...
car il doit y avoir plus élégant que ces 2 possibilités ( doux euphémisme )
<hr />
                     Cordialement       Bul    [mon Site]    [M'écrire]
<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,
   je me doutais bien que l'affichage n'était là que "pour l'exemple".
   je vais mettre ta solution précieusement de coté,
      ça peut être très utile. c'est nickel.
<hr />
            Cordialement       Bul       [mon Site]    [M'écrire]
<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
très très bien apply !       merci,bravo FremyCompagny
comme quoi le JavaScript c'est quand même un
   superbe langage... mais quid d'une doc ?...
<hr />
                        Cordialement             Bul       [mon Site]    [M'écrire]
<hr />
Messages postés
278
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 décembre 2008

De rien !

Sinon, tu as aussi call: f2.call (this, arguments[0], arguments[1], ...)

Dans call et apply le premier argument est ce qui va représenter "this" dans la fonction.

Sot:
function f1() { return f2.call(new Object()); }
function f2() { this.value=3; }

f1() renvera { "value": 3 }

Pourquoi notre PC fait-il toujours ce qu'on lui dit ... et pas ce qu'on veut ???
Messages postés
278
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 décembre 2008

Oops, dans mon exemple, j'ai oublié de mettre "retrurn this; " a la fin de la fonction f2...
Au fait, ici, on peut éditer ses messages ou bien on est obligé de publier un "correctif" ?

Pourquoi notre PC fait-il toujours ce qu'on lui dit ... et pas ce qu'on veut ???
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>on est obligé de publier un "correctif"
oui, certains disent pour éviter les interventions après
      des réponses, ce qui risquerait de "fausser" les
      conversations, ce qui n'est pas faux.
   mais j'aimerais aussi pouvoir revenir sur mes messages 
   ( ne serait-ce que pour l'ortaugrafe parfois )... tant
   qu'il n'y a pas eu de réponse(s), par exemple.
<hr />
            Cordialement          Bul       [
mon Site
]    [
M'écrire
]
<hr />
Messages postés
278
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 décembre 2008

Ok, ca va, merci de l'info !