JavaScriptのFunctionオブジェクトには、callとapplyメソッドがあり、これらの違いとメリットを解説します。
Functionオブジェクトには、callとapplyメソッドがありますが、どのように使い分ければいいのでしょうか?
callとapplyメソッドは、ほぼ同じ機能ですが、引数の渡し方が異なります。違いとメリットを説明します。
callメソッドとapplyメソッドの使い方
callメソッドを使う場合、関数名.call(this, 引数1, 引数2, …) のように書きます。また、applyメソッドを使う場合は関数名.apply(this, [引数1, 引数2, …]) のように書きます。
これらのメソッドを使うことで、任意の関数を任意のオブジェクトのコンテキストで実行することができます。
callメソッドとapplyメソッドの違い
callメソッドとapplyメソッドの違いは、第2引数以降に渡す引数の書き方です。
callメソッドでは個別に引数を渡しますが、applyメソッドでは配列形式で渡します。これはapplyメソッドを使う場合、配列の数を変更することで引数の数を変更することができるというメリットがあります。
以下はcallメソッドとapplyメソッドのサンプルです。
let obj1 = {name: 'John'};
let obj2 = {name: 'Jane'};
function sayName() {
console.log(this.name);
}
sayName.call(obj1); // John
sayName.call(obj2); // Jane
let obj1 = {name: 'John'};
let obj2 = {name: 'Jane'};
function sayName() {
console.log(this.name);
}
sayName.apply(obj1, []); // John
sayName.apply(obj2, []); // Jane
callメソッドとapplyメソッドのメリット
どちらのメソッドも、thisの値を指定することができるため、関数を別のオブジェクトのコンテキストで実行することができます。
また、同じ関数を使って異なるオブジェクトのプロパティを利用することもできます。
リスキリングでキャリアアップしてみませんか?
リスキリング(学び直し)は、経済産業省が推奨しており、
今だけ、最大70%のキャッシュバックを受けることができます。
最大70%の給付金が出るおすすめのプログラミングスクール!
国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!
興味のある方はすぐに確認しましょう。
この記事のまとめ
callとapplyメソッドの違いとメリットを解説しました。
- callメソッドは引数を個別に渡すことができます。
- applyメソッドは引数を配列形式で渡すことができます。
- callメソッドとapplyメソッドは、thisの値を指定することができます。
- 関数を別のオブジェクトのコンテキストで実行することができます。
- 同じ関数を使って異なるオブジェクトのプロパティを利用することもできます。
callメソッドとapplyメソッドはとても便利なメソッドですね。
callメソッドとapplyメソッドを使うことで、任意の関数を任意のオブジェクトのコンテキストで実行することができます。引数の形式に応じて使い分けると良いです。
コメント