2012-04-18 6 views
0

関数へのポインタを格納し、後でそれをいくつかの引数で呼び出すが、引数を関数に渡す方法に問題がある。例えば後で決定された引数を使用してJavaScript関数を呼び出す

var MyObject = (function() { 
    return { 
     myMethod: function (a, b) { 
      return a + b; 
     } 
    }; 
}()); 

var method = MyObject.myMethod; 
var args = [2, 5]; 

method(args); 

私の配列の試みが失敗し、オブジェクトを作成するので、だから私は、私がmethod(args)やりたいしません知っている最後の行で、私は、基本的にMyObject.myMethod(2, 5)を呼びたいが、また失敗します。格納された引数を格納されたメソッドに渡すにはどうすればよいですか?

答えて

8

あなたは引数

var myarray = [2,5,...] //your array of arguments 

method.apply(this,myarray); //execute your method 

として、あなたが持っているメソッドの引数の配列を受け入れapplyを使用することができ、あなたは「隠れた」「疑似列」arguments引数を経由して、引数を受け取ることができます。

function method(){ 
    var args = arguments; //is [2,5,...] 
} 

この

を使用すると、引数配列を事前に構築することができ、通話の ()

+0

ブリリアント。どうもありがとうございました。 – Fenton

+0

だから、あなたは何を言うことができますか? – Joseph

1

K.スコット・アレンの引数を列挙する必要はありませんので、call上の利点を持っているこの種の偉大な古い記事があります物の呼び出される関数内のthisの値に影響を与える方法としてcallまたはapplyを使用してください。

http://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx

+0

正解ありがとう。ジョセフはちょうどポストにあなたをピックしました。 – Fenton

関連する問題