【Node.js24.x】Function::call()メソッドの使い方
callメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
callメソッドは、指定されたthisの値と個別に提供された引数を使用して、関数を実行するメソッドです。JavaScriptの関数は、呼び出される文脈によってthisが指す値が自動的に決まりますが、callメソッドを利用することで、開発者が明示的にthisとして使用したいオブジェクトを指定して関数を呼び出すことができます。
このメソッドの最初の引数には、関数内でthisキーワードが参照するオブジェクトを指定します。第二引数以降には、呼び出される関数に渡したい引数を、それぞれカンマで区切って個別に指定します。例えば、あるオブジェクトが持つメソッドを、別のオブジェクトが自身のメソッドであるかのように実行したい場合や、一般的なユーティリティ関数を特定のオブジェクトのコンテキストで実行したい場合などに非常に有効です。
callメソッドはFunction.prototypeに定義されているため、JavaScriptのすべての関数オブジェクトがこのメソッドを利用できます。同じく関数のコンテキストを操作するapplyメソッドと機能は似ていますが、引数の渡し方が異なります。applyメソッドが引数を配列として受け取るのに対し、callメソッドは引数を個々の値として受け取ります。これにより、柔軟なコンテキスト制御と引数指定が可能となり、オブジェクト指向プログラミングにおける機能の再利用性や、複雑なロジックの実装において役立ちます。Node.js環境においても、JavaScriptの標準機能として利用可能です。
構文(syntax)
1function greet(message) { 2 console.log(`${message}, ${this.name}!`); 3} 4 5const person = { name: 'Alice' }; 6 7greet.call(person, 'Hello');
引数(parameters)
thisArg, ...args
- thisArg: 関数を呼び出す際に
thisキーワードとして使用されるオブジェクト。指定しない場合はundefinedになります。 - args: 関数に渡される引数。可変長引数として任意の数の引数を指定できます。
戻り値(return)
呼び出された関数の戻り値
このメソッドは、指定されたコンテキスト(thisの値)と引数で、呼び出された関数を実行します。その際、元の関数が返す値をそのまま返します。