LoginSignup
0

posted at

【js】bind,call,applyの挙動差異メモ

bindとは

thisの参照先のオブジェクトや引数を指定できる。第一引数にthis参照先オブジェクト、第二引数以降は、関数に渡ってくる引数の値を入れられる。

callとは

bindのようにthisや引数の参照先を変更できる。同時に関数を実行する。第二引数以降は、関数の引数の値を入れられる点もbindと同様。つまりcallとbindの違いはその場で実行されるかされないかのみ。

applyとは

bindのようにthisや引数の参照先を変更できるが、同時に関数を実行する。第二引数に設定するのは配列。配列に渡された値が展開されて、関数の仮引数に渡っていく。

サンプルコード

script.js
function a(name,name2) {
    console.log('hello' + name + ' ' + name2);
}

//束縛したいオブジェクト
const tim = {
    key: 'value'
}

const b = a.bind(tim, 'Tim', 'Bob');
b();                    //bindを使ってthis参照先オブジェクトを束縛した場合は、このように関数式などに代入し、それを実行する必要がある。
a.call(tim, 'Tim', 'Bob');            //callを使って束縛した場合は、実行まで行われる。
a.apply(tim,['Tim','Bob']);           //applyを使って束縛した場合は、実行まで行われる。引数は配列   

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0