0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

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を使って束縛した場合は、実行まで行われる。引数は配列   
0
1
0

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
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?