しびら

技術ネタのメモとか。

JavaScriptのcallを理解する

   

1a5aab66-8eaf-1684-01f1-923f07c3f971

 

call method とは

第1引数として関数内でthisとして呼びたいオブジェクトを指定でき、それ以降の引数は対象となる関数の引数として実行されます。

fun.call(thisArg[, arg1[, arg2[, ...]]])

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/call

echo function関数を作成して、直接関数を実行する方法と、callメソッドを使用して実行する方法を記述してみました。

ちなみに、引数を記述しなくても、関数は実行できます。

次に、第一引数の値を呼び出せるか確認します。

ちなみに、non-strict mode ( コードにuse strictが記述されていないコード )の場合、第一引数がnullやundefinedの場合はグローバルオブジェクトが設定されます。(ちなみに今回はNodeで実行しています。ブラウザで実行した場合はWindowオブジェクトの中身が出力されるはずです。)

Utility.echo.callの第一引数を別のオブジェクトfugaにすることで、オブジェクトfugaがUtility.echoメソッドを実行することができます。instanceofを確認すると、Fugaインスタンスで実行されていることがわかります。

 

apply method とは

ちなみに、callメソッドと似たapplyメソッドがありますが、引数の指定の方法が異なります。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

fun.apply(thisArg[, argsArray])

applyメソッドでは、引数として配列を指定します。

 - Javascript, Node , ,