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 サイトの他の関連記事を参照してください。