【javascript】Spread in destructuring

沢山の引数をまとめて渡す方法

すぐ思いつく方法としては、
自前の関数を

aaa({ a: 111,b:222, c:333, d:444});

そして、渡して関数の方も

function aaa(json) {
  console.log(json.a);
  ...
  console.log(json.d);
}

とすればいい。
しかし、関数の方は<script src=”http:…”>な感じの場合は書き換え不能だ。

調べてみると

function myFunction(x, y, z) { }
  var args = [0, 1, 2];
  myFunction.apply(null, args);

と書くのが普通らしい。IEでも動くそうだ。※動作未確認。
applyの最初のパラメータはthisで、 普通の関数ではnullになる。
2番目に引数リストを渡す。

今は、スプレッド構文「関数名(変数)な形式」で関数を呼び出す書き方もあった。

aaa(a,b,c,d) な感じの関数のパラメータをまとめて渡すには

var args =[a,b,c,d];

または

var  args = [];
args . push(a);
...
args.push(d);

で、配列に詰め込んで

aaa(...args);

難点を云えば、Edgeは動いたが、IEではダメらしい。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA