LoginSignup
6
10

More than 3 years have passed since last update.

【JavaScript】 call、apply、bindの使い方

Last updated at Posted at 2020-01-05

thisの値は呼び出し方によって値が変わりますが、3つのメソッドを使ってthisの値を意図的に操作することができます。

call

function greeting(func1, func2) {
    console.log(func1 + this.name + func2);
}

var myName = {
    name: 't0shimaru'
}

greeting.call(myName, 'はじめまして! ', 'です!'); 
// → はじめまして! t0shimaruです!

第1引数をthisの値としたいオブジェクトを引数として指定します。
第2引数以降はgreeting関数の引数になります。

apply

function greeting(func1, func2) {
    console.log(func1 + this.name + func2);
}

var myName = {
    name: 't0shimaru'
}

greeting.apply(myName, ['はじめまして! ', 'です!']);
// → はじめまして! t0shimaruです!

applyはcallと同じように使うことができますが、第2引数以降を配列として受け取ることができます。

bind

bindは上記2つのメソッドと違い、呼び出されたときに新しい関数を作成して、値を操作します。
以下の例では、変数に関数を代入してその変数から呼び出しています。
第2引数以降にも値を指定することで、関数の引数として渡すことができます。

function greeting(func1, func2) {
    console.log(func1 + this.name + func2);
}

var myName = {
    name: 't0shimaru'
}

var newGreeting = greeting.bind(myName);
newGreeting('はじめまして! ', 'です!');
// → はじめまして! t0shimaruです!

以上、自己紹介(?)を兼ねたメソッドの使い方でした!

6
10
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
6
10