トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

JavaScript:callとapplyの違いとか のバックアップの現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*JavaScript:callとapplyの違いとか [#x54b04a4]

JavaScriptの本を読んでいて今勉強してます。<br>あああ
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