0

関数へのポインターを格納し、後でいくつかの引数を指定して呼び出したいのですが、引数を関数に渡す方法に問題があります。

例えば:

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)ので、配列の試行が失敗し、オブジェクトの作成も失敗します。保存された引数を保存されたメソッドに渡すにはどうすればよいですか?

4

2 に答える 2

8

apply引数の配列を引数として受け入れるものを使用できます

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

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

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

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

call引数配列を事前に構築でき、呼び出しで引数を列挙する必要がないため、これには利点があります。()

于 2012-04-18T22:23:21.893 に答える
1

K. Scott Allen には、この種のことに関する非常に古い記事があります。呼び出された関数内の値に影響を与える方法としてcallorを使用します。applythis

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

于 2012-04-18T22:23:48.847 に答える