call()とapply()の違い

メモ

関数オブジェクトのcall()メソッドとapply()メソッドの違いは、後者は第二引数を配列形式で指定する点だけが違うのかと思っていたが引数を受け取った側の引数の扱いも違うようだ。

var f = function(){
  return arguments.length;
};

f.call(this, [1,2]); // => 1が返される。

f.apply(this, [1,2]); // => 2が返される。

// つまりこの例のapplyは

f.call(this, 1, 2); // これと等しいようだ。