2009-06-17 11 views
2

アクセスする関数の引数は、私が持っているものです。Javascriptを:ここでは、一般的に

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); 

私はコンソールで取得したいので、それは間違っている:

before : 
inside :1/2 
after : 

しかし、私はこれを代わりに取得します:

before : 
inside :1/undefined 
after : 

どのように私はargsはで返される関数に渡されるすべての引数でJavaScriptを伝えることができます?

答えて

5

あなたが指定した「この」と引数の配列を持つ関数を呼び出すためにapplyを使用するので、(この、引数)fn.applyてみ

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

を試すことができます。 – James

+0

は、あなたが試しているものにもっとよく合致させた例を –

+0

ありがとう。 – glmxndr

関連する問題