JavaScriptのcall()とapply()の違いとは?使い方をわかりやすく解説
JavaScriptのcall()とapply()の違いとは?
JavaScriptにおいて、call()とapply()は、どちらもFunctionオブジェクトが持つメソッドです。両者は「特定のオブジェクトをthisとして関数を呼び出す」という点で共通していますが、引数の渡し方に決定的な違いがあります。
call()メソッドの使い方
call()メソッドは、第1引数にオブジェクトを指定し、第2引数以降に個別の引数をカンマ区切りで渡します。つまり、引数を1つずつ列挙して渡したい場合に使用します。
構文は以下の通りです。
.call(object, "argument1", "argument2");
apply()メソッドの使い方
apply()メソッドは、引数を配列として渡したい場合に使用します。第1引数にオブジェクト、第2引数に引数のリストを格納した配列を指定する必要があります。
構文は以下の通りです。
.apply(object, ["argument1", "argument2"]);
call()とapply()の使用例
以下のサンプルコードでは、call()とapply()の両方の使い方を確認できます。
<!DOCTYPE html>
<html>
<head>
<body>
<script>
var p = {
q: "Hello"
}
function showResult(v) {
document.write(this.q + " " + v);
}
showResult.call(p, "Amit"); // 引数を個別に渡す
showResult.apply(p, ["World"]); // 第2引数に配列を渡す
</script>
</body>
</head>
</html>この例では、オブジェクトpをthisとして関数showResult()を呼び出しています。call()では引数を直接指定し、apply()では配列に格納して渡している点が違いです。どちらの場合も、関数内のthis.qはオブジェクトpのプロパティ値「Hello」を参照します。
まとめ
両者の違いを一言でいえば、引数の渡し方です。call()は引数を個別に列挙して渡し、apply()は配列として渡します。引数の数が動的に変わる場合や、すでに配列形式で引数を持っている場合はapply()を使うと便利です。用途に応じて使い分けることで、柔軟な関数呼び出しが実現できます。
-
JavaScriptにおける関数とメソッドの違いとは?わかりやすく解説
JavaScriptにおいて、関数とメソッドは本質的には同じものです。両者の違いは、メソッドがオブジェクトのプロパティとして定義された関数であるという点にあります。つまり、独立して定義されたものを「関数」、オブジェクトに紐づけられたものを「メソッド」と呼びます。 JavaScriptの関数の基本形 まず、一般的な関数の定義方法を見てみましょう。 function functionname(param1, param2){ // 処理内容 } JavaScriptのメソッドの例 メソッドは、オブジェクトに関連付けられた関数です。次の例では、employeeオブジェクトの中にdetails
-
JavaとJavaScriptの違いとは?歴史・技術・使い分けを徹底解説
ウェブ開発者のジェレミー・キースは2009年、「JavaとJavaScriptの関係は、ハムとハムスターの関係のようなものだ」と語りました。この比喩がどれほど正確かは議論の余地がありますが、その本質は的確です。共通する言語的ルーツを持つにもかかわらず、JavaとJavaScriptはまったく異なる2つのプログラミング言語なのです。年月とともに両者の重なりも多少増えましたが、今なおJavaScriptはウェブサイトにインタラクティブ性をもたらすフロントエンド言語の主流であり続け、Javaはサーバーサイドやアプリケーション開発で人気を保っています。開発者を採用したい方、プログラミングを学びたい方