ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の binding() メソッドを使用する必要があるのはどのような場合ですか?

JavaScript の binding() メソッドを使用する必要があるのはどのような場合ですか?

Linda Hamilton
リリース: 2024-11-30 18:44:18
オリジナル
839 人が閲覧しました

When Should You Use JavaScript's bind() Method?

Javascript binding() メソッド

call() と apply() は、手動で渡すことで特定のコンテキストで関数を呼び出すために使用されます。または引数を配列として指定する場合、bind() メソッドは別の目的を果たします。

使用する場合bind()

bind() メソッドは、後で呼び出すために事前定義されたコンテキストを使用して新しい関数を作成する必要がある場合に使用する必要があります。これは、イベント処理や非同期コールバックで特に役立ちます。

call() および apply() との比較

即座に実行する call() および apply() とは異なります。関数の場合、bind() は新しい関数を返します。この新しい関数を実行すると、元の関数のコンテキストがバインドされたオブジェクトに設定されます。

次の例を考えてみましょう。

var obj = {
  x: 81,
  getX: function() {
    return this.x;
  }
};

// Bind the function to the object 'obj'
var boundGetX = obj.getX.bind(obj);

// Later, invoke the bound function with the desired context
alert(boundGetX());
ログイン後にコピー

このシナリオでは、boundGetX 関数は非同期またはコールバックで呼び出された場合でも、obj オブジェクトのコンテキスト。

イベントでの使用

の処理 イベントを処理するとき、特定のオブジェクトのコンテキストを維持したいと思うのが一般的です。 bind() を使用すると、イベント ハンドラーが実行時に正しいコンテキストを持っていることを確認できます。

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

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

MyObject.prototype.onClick = function(e) {
     // 'this' refers to the MyObject instance
    // Perform some action...
};
ログイン後にコピー

onClick 関数を MyObject インスタンスにバインドすることで、クリック イベントが発生したときに、その中の this キーワードが確実に実行されるようになります。イベント ハンドラーは MyObject インスタンスを参照します。

実装の詳細

A binding() の簡略化された実装は次のようになります:

Function.prototype.bind = function(ctx) {
    var fn = this;
    return function() {
        fn.apply(ctx, arguments);
    };
};
ログイン後にコピー

以上がJavaScript の binding() メソッドを使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート