ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript での呼び出しと適用: これらの関数呼び出しメソッドはどのように異なりますか?

JavaScript での呼び出しと適用: これらの関数呼び出しメソッドはどのように異なりますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 11:05:17726ブラウズ

Call vs. Apply in JavaScript: How Do These Function Invocation Methods Differ?

関数呼び出しメソッド: call と apply

JavaScript では、call メソッドと apply メソッドを使用して、カスタム コンテキストと引数を使用して関数を呼び出すことができます。 。どちらのメソッドも同じ目的を果たしますが、引数の受け渡しを処理する方法が異なります。

呼び出しと適用: 引数の処理

主な違いは、引数の受け渡し方法にあります。関数に指定されます:

  • call: 各引数が渡されます
  • apply: 引数は配列として渡されます。

この区別を覚えておくために、ニーモニック「A は配列、C はカンマ」を使用できます。便利です。

構文:

  • 呼び出し:

    theFunction.call(valueForThis, arg1, arg2, ...)
  • 適用:

    theFunction.apply(valueForThis, arrayOfArgs)

例:

function theFunction(name, profession) {
  console.log("My name is " + name + " and I am a " + profession + ".");
}

theFunction("John", "fireman");
theFunction.apply(undefined, ["Susan", "school teacher"]);
theFunction.call(undefined, "Claude", "mathematician");

この例では、call メソッドはカンマ区切りの引数とともに使用されますが、apply メソッドは引数の配列を受け取ります。

Spread Operator:

ES6 以降では、スプレッド演算子を使用して配列を引数として渡すことができます。 call メソッド:

theFunction.call(undefined, ...["Matthew", "physicist"]);

パフォーマンスと使用法の推奨事項:

call と apply の間に大きなパフォーマンスの違いはありません。どのメソッドを使用するかの選択は、特定の状況によって異なります。

  • 引数がすでに配列内にある場合は、apply を使用するとコードを簡素化できます。
  • this コンテキストにカスタム値を渡す必要がある場合は、call と apply の両方を次のように行うことができます。
  • 関数をオブジェクトとして扱う場合は call を使用し、引数の配列を扱う場合は apply を使用することが一般的に良い方法であると考えられています。

以上がJavaScript での呼び出しと適用: これらの関数呼び出しメソッドはどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。