時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【解説】JavaScriptのcall/apply/bindの使い方

記事内に広告を含みます

【解説】JavaScriptのcall/apply/bindの使い方

JavaScriptのapply/call/bindの使い方を順に解説していきます。

・call()

・apply()

・bind()

call()

call()はthisや引数の参照先を変更しつつ、関数を即時実行するのが特徴です。

第一引数に参照先オブジェクト名、第二引数以降に関数の引数をいれます。

関数名.call(参照オブジェクト, 引数, 引数);

使い方の例がこちら↓

function testFun(a, b) {
  console.log('私の名前は' + this.name); //私の名前は田中
  console.log(a, b); //10 20
}

const testObj = {
  name: '田中',
}

testFun.call(testObj, 10, 20);

testFun関数のthisの参照先が、testObjのオブジェクトになっているのがわかりますね。

apply()

apply()はthisや引数の参照先を変更しつつ、関数を即時実行するのが特徴です。

ほぼcall()と同じに見えますが、引数の渡し方が配列になるのが異なる点。

関数名.apply(参照オブジェクト, [引数, 引数]);

使い方の例がこちら↓

function testFun(a, b) {
  console.log('私の名前は' + this.name); //私の名前は田中
  console.log(a, b); //10 20
}

const testObj = {
  name: '田中',
}

testFun.apply(testObj, [10, 20]);

引数の渡し方が異なるだけで、ほぼcallと同じですね。

bind()

bind()はthisや引数の参照先を固定しつつ、新しい関数を作成するのが特徴です。

call()やapply()と違い、即時関数が実行されません。

関数名.bind(参照オブジェクト, 引数, 引数);

//返り値が関数オブジェクト
const 変数名 = 関数名.bind(参照オブジェクト, 引数, 引数);
変数名();

新しく作った関数が返り値になります。

使い方の例がこちら↓

function testFun(a, b) {
  console.log('私の名前は' + this.name); //私の名前は田中
  console.log(a, b); //10 20
}

const testObj = {
  name: '田中',
}

const bindFun = testFun.bind(testObj, 10, 20);
bindFun();

ちなみにbind()は参照先を固定します。

そのためその後にcallを使っても、thisの値は固定されているため変更されません。

const bindFun = testFun.bind(testObj, 10, 20);
bindFun();
// 私の名前は田中
//10 20

bindFun.call({name: '山田'}, 5, 15);
// 私の名前は田中
//10 20

【解説】JavaScriptのcall/apply/bindの使い方:まとめ

  • call()⇒this,引数の参照先を変更。即時関数を実行
  • apply()⇒this,引数の参照先を変更。引数は配列で渡す。即時関数を実行
  • bind()⇒this,引数の参照先を固定。新しい関数を作る。
ジト
ジト

call/apply/bindを使う時はためしてみてね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA