Discussions

Qcallとapplyの使い方の違いについて教えてください

callとapplyは、どちらも "this" に、引数で渡したオブジェクトを参照するように設定して呼び出すもの、
という認識でいるのですが、別の関数として用意されている以上、違う用途があるのだと思います。

しかし、今の認識だと「どっちでもいいんじゃ・・?」という認識なので
具体的にどういったときにどちらを使う、というような分かりやすいケースはありますでしょうか?

よろしくお願いします。

AAnswer to: callとapplyの使い方の違いについて教えてください

kyo_ago

callとapplyはどちらも第一引数のobjectをthisとしてfunctionを呼び出します。

この点に関してはどちらも違いがないのですが、それ以外に基本的な構文として以下のような違いがあります。

・apply
第二引数の配列(or 配列っぽいobject)を展開してfunctionの引数とします。
(applyの第二引数は配列以外渡せない)

・call
第二引数以降の引数をそのままfunctionの引数とします。

具体的な例はコードを見てもらうとわかると思いますが、
apply(null, [arg1, arg2, arg3])とcall(null, arg1, arg2, arg3)は等価なので
速度を気にしない場合callは一切使わずにapplyのみを使用しても大丈夫です。
(基本的にcallの方が高速に動く)

Post a question

You can post JavaScript, HTML, CSS related questions with attached reference to actual codes and get the answers likewise.

Ask a question

  • 1. Click the ‘Post a question’ above

  • 2. Enter question details, reference code, and click ‘Add question’ button

  • 3. Question will be paired with the code on display

Add an answer

  • 1. Choose a question

  • 2. Enter answer details, attach the reference code and click ‘add answer’ button

  • 3. Your answer will accompanied with attached code

Tag