トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

JavaScript:callとapplyの違いとか

Last-modified: 2013-08-24 (土) 02:14:21 (3897d)
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