thisキーワードと引数を任意に設定し関数を実行する

thisキーワードと引数を任意に設定し関数を実行するには、function.callメソッドまたはfunction.applyメソッドを使用します。
function.callとfunction.applyはほぼ同じ動作をしますが、引数の渡し方に違いがあります。

構文

function.call(thisArg[, arg...]);
function.apply(thisArg[, args]);
関数 function 実行する関数
第一引数 thisArg 関数に渡すthisの値
この値がnullあるいはundefinedであった場合、
グローバルオブジェクト、つまりwindowオブジェクトを渡す
第二引数以降(call) arg 関数に渡す引数
第二引数(apply) args 関数に渡す引数が格納された配列

サンプルコード

JavaScript

var foo = function(bar, baz) {
	alert(this.sample);
	alert(bar);
	alert(baz);
};

var setThis = {
	sample : 'value'
};

var args = [
	123,
	'abc'
];

// function.call
foo.call(setThis, 123, 'abc');

// function.apply
foo.apply(null, args);

JavaScript逆引きリファレンス一覧へ戻る