2009-06-17 13 views
2

Voici ce que j'ai:Javascript: l'accès à des arguments de fonction génériquement

var log = function(arg1, arg2){ 
    console.log("inside :" + arg1 + "/" + arg2); 
}; 

var wrap = function(fn){ 
    return function(args){ 
     console.log("before :"); 
     fn(args); 
     console.log("after :"); 
    } 
}; 

var fn = new wrap(log); 
fn(1,2); 

Il est faux, parce que je voudrais obtenir dans la console:

before : 
inside :1/2 
after : 

Mais je reçois ceci:

before : 
inside :1/undefined 
after : 

Comment puis-je dire que le javascript est args tous les arguments passés à la fonction renvoyée par wrap?

Répondre

5

Vous pouvez utiliser apply pour appeler une fonction ayant une valeur spécifiée « ceci » et tableau d'arguments, alors essayez

var wrap = function(fn){ 
    return function(){ 
     console.log("before :"); 
     fn.apply(this, arguments); 
     console.log("after :"); 
    } 
}; 
+1

Essayez fn.apply (ce, arguments); – James

+0

ont fait l'exemple plus étroitement correspondre à ce que vous essayez –

+0

Merci compagnon. – glmxndr