JavaScript Functionのcall/applyメソッドの違いとメリットについて

JavaScriptのFunctionオブジェクトには、callとapplyメソッドがあり、これらの違いとメリットを解説します。

Functionオブジェクトには、callとapplyメソッドがありますが、どのように使い分ければいいのでしょうか?

callとapplyメソッドは、ほぼ同じ機能ですが、引数の渡し方が異なります。違いとメリットを説明します。

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    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メソッドを使うことで、任意の関数を任意のオブジェクトのコンテキストで実行することができます。引数の形式に応じて使い分けると良いです。

    よかったらシェアしてね!
    • URLをコピーしました!
    • URLをコピーしました!
    目次