沢山の引数をまとめて渡す方法
すぐ思いつく方法としては、
自前の関数を
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ではダメらしい。