0

2 つの変数と 1 つの関数があります。

<script> 

function myfunction(a1,a2,a3)
{
    alert(a1+a2+a3)
}

var fname="myfunction";
var fdata="data1,data2,data3";

</script>

変数値から関数を呼び出したい。このような

myfunction('data1','data2','data3')

変数値から関数を呼び出す方法を知っています。

window[fname](); //this call myfunction()

しかし、変数値から複数の引数を指定して関数を呼び出す方法がわかりませんか?

できれば解決策を教えてください!

4

3 に答える 3

3

まず、関数への参照を保持するために関数の名前を使用する必要はありません。関数を直接使用するだけです:

var fname = myfunction;

次に、それを呼び出すことができます:

fname('whatever');

その文字列からパラメーターを渡すには、文字列からパラメーターを取得する必要があります。このプロセスは、最初に値を文字列にどのように結合したかによって異なります。あなたの例では、文字列をカンマで分割して配列を作成し、次に使用することができます.apply()

fname.apply(null, fdata.split(','));

この.apply()メソッドは、2 番目のパラメーター (最初のパラメーターは に使用される値this) として配列を受け入れ、引数の値が配列の要素になるように関数を呼び出します。

于 2013-10-19T17:37:39.080 に答える
1

括弧の間に引数を追加するだけです

window[fname]('data1', 'data2', 'data3');

fdata値を使用して引数を動的に渡すには、apply(@Pointy が示唆するように) を使用する必要があります。

window[fname].apply(null, fdata.split(','));
于 2013-10-19T17:39:19.953 に答える