ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript関数バインディングを詳しく解説_基礎知識

JavaScript関数バインディングを詳しく解説_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:25:041370ブラウズ

< input id="btnTest" type="button" value="Button"/>

ハンドラー楽しい:function(){ document.getElementById('btnTest').onclick=handler.handlerFun ; プログラム。設計意図は次のとおりです。ボタンをクリックすると、このメソッドがトリガーされ、ダイアログ ボックスがポップアップしてハンドラーによって定義されたメッセージが表示されます。ただし、ダイアログ ボックスの内容は、クリック後には定義されません。クロージャに慣れている学生であれば、handler.handlerFun() メソッドの実行環境が保存されていないことが問題であることが簡単にわかります。このオブジェクトは最終的にハンドラーではなく DOM ボタンを指しています。クロージャを使用してこの問題を解決するには、関数バインディング ステートメントを変更します。コードをコピーします。

コードは次のとおりです。


document.getElementById('btnTest').onclick=function(){
handlerFun(); onclick プログラムは、クロージャを使用して、Of メソッドを直接呼び出します。もちろん、これはこのシナリオに固有の解決策です。複数のクロージャを作成すると、コードの理解とデバッグが難しくなる可能性があります。


カスタムバインド関数




コードをコピー

コードは次のとおりです:

関数が関数ポインターの形式で渡され、その関数が特定の環境で実行される必要がある場合は、カスタムの binding() 関数を使用できます。これらは主にイベント ハンドラーと setTimeout および setInterval に使用されます。 , このバインド方法は通常の関数より多くのメモリ オーバーヘッドを必要とするため、必要な場合にのみ使用するようにしてください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。