ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の `call()`、`apply()`、および `bind()` メソッドの違いは何ですか?

JavaScript の `call()`、`apply()`、および `bind()` メソッドの違いは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-02 15:10:14904ブラウズ

What's the Difference Between JavaScript's `call()`, `apply()`, and `bind()` Methods?

call()、apply()、bind() メソッドの違いを理解する

JavaScript では、開発者がメソッドの実行コンテキストを設定する必要があることがよくあります。関数。 call() メソッドと apply() メソッドはこの目的を果たし、関数の this キーワードを変更できるようにします。ただし、別のメソッド、bind() は異なる機能を提供します。

call() と apply()

call() と apply() は共通の目的を共有します。 : 特定のコンテキスト (this) を設定しながら関数を即座に実行します。ただし、引数の受け渡し方法が異なります。call() は引数を個別に受け取りますが、apply() は引数の単一の配列を期待します。この違いは、提供されているコード例に示されています。

// call()
obj.getX.call(obj);

// apply()
obj.getX.apply(obj);

bind()

call() や apply() とは異なり、bind() は次の目的で使用されません。即時の関数呼び出し。代わりに、指定されたコンテキストが事前にバインドされた新しい関数を返します。このバインドされた関数は、コンテキストを追加変更することなく、後で呼び出すことができます。コード例は、この動作を示しています。

// bind()
// The this keyword of the bound function is locked to obj
var boundX = obj.getX.bind(obj);
boundX(); // Returns 81

bind() を使用する場合

事前に設定されたコンテキストを持つ関数を作成する場合は、bind() を使用します。将来の実行。これは、非同期コールバックやイベントに対して適切なコンテキストが確実に維持されるようにするイベント処理で特に役立ちます。提供されているコード例は、この使用例を示しています。

function MyObject(element) {
    this.elm = element;

    element.addEventListener('click', this.onClick.bind(this), false);
};

この例では、onClick メソッドが MyObject インスタンスにバインドされているため、クリック イベントが発生すると、onClick 関数内の this キーワードが参照します。正しいインスタンスです。

結論

call() と apply() は即時関数を許可しますコンテキスト変更を伴う呼び出しでは、bind() は、事前に決定されたコンテキストで将来の実行に備えて関数を準備する点で優れています。これらのメソッドのニュアンスを理解することで、開発者はさまざまなシナリオで関数コンテキストを効果的に管理できます。

以上がJavaScript の `call()`、`apply()`、および `bind()` メソッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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