HiiHahWIKI - making some notes for... -
JavaScript:callとapplyの違いとか
をテンプレートにして作成
開始行:
*JavaScript:callとapplyの違いとか [#x54b04a4]
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
終了行:
*JavaScript:callとapplyの違いとか [#x54b04a4]
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
ページ名: