19

Javascript コード:

function doSomething(v1,v2){ //blah; }

function SomeClass(callbackFunction,callbackFuncParameters(*Array*))={
   this.callback = callbackFunction;
   this.method = function(){
       this.callback(parameters[0],parameters[1])  // *.*
   }
}

var obj = new SomeClass( doSomething, Array('v1text','v2text') );

問題は、関数 doSomething を次のように変更した場合です。

function doSomething(v1,v2,v3){ //blah; }

対応する行( としてマークされている//*.*)をSomeClassに変更する必要があります

this.callback(parameters[0],parameters[1],parameters[2]);

(*.*)「doSomething」関数のパラメータ数をいくら変更しても行が変更されないようにするにはどうすればよいでしょうか?

どうもありがとう!

4

2 に答える 2

24

おそらくapplyメソッドを使用したいでしょう

this.callback.apply(this, parameters);

適用する最初のパラメーターは、コールバック内の「this」の値を示し、任意の値に設定できます。

于 2009-01-30T07:24:10.107 に答える
0

現在利用可能な別の方法は、拡散構文を使用することです。

this.callback(...callbackFuncParameters)

OPの完全な例をもう一度示します。

function doSomething(v1,v2) {
    console.log('doing', {v1, v2});
}

function SomeClass(callbackFunction, callbackFuncParameters) {
   this.callback = callbackFunction;
   this.method = function(){
       this.callback(...callbackFuncParameters); // spread!
   }
}

var obj = new SomeClass( doSomething, Array('v1text','v2text') );
obj.method()
// output: doing {v1: "v1text", v2: "v2text"}
于 2020-06-29T21:33:19.130 に答える