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);