JavaScript:callとapplyの違いとか
Last-modified: 2013-08-24 (土) 02:14:21 (3496d)
Top / JavaScript:callとapplyの違いとか
JavaScript?:callとapplyの違いとか †
callとapplyは、第一引数に関数を実行するコンテキストをとるのは同じだけど、実行する関数への引数の渡し方が違います。
- callは、call関数の引数として指定された2番目以降の引数がそのまま引き渡される
- applyは引数として1つの配列オブジェクトを指定し、その配列オブジェクトが展開されて引数として引き渡される
例を見た方がはやいですな。
以下の例では、引き渡された数字を足し込む関数を
- そのまま
- call経由
- apply経由
で呼び出します。
■例
function sum(){ var result = 0; for (var n = 0; n < arguments.length; n++ ){ result += arguments[n]; } this.result = result; } var scope1 = {}; var scope2 = {}; // グローバルスコープで実行 sum(1,2,3,4) // scope1のスコープでapplyで実行 sum.apply(scope1,[5,6,7,8]); // scope2のスコープでcallで実行 sum.call(scope2,9,10,11,12); // それぞれ結果を確認 console.log(result); console.log(scope1.result); console.log(scope2.result);
結果は以下のとおり。
10 26 42