jquery: one には、eventバインディングを一度だけ自動的にアンバインドするために使用されるメソッドがあります。ソースコードをずっと見ていてめまいを感じたので、自分で作ってみることにしました。長い間勉強した後、一度ネイティブを使ってシミュレーションしてみました。かつて私が使っていた名前です。
元のメソッドは次のとおりです:
function once(dom, event, callback) { // 这一步是为了避免修改形参 var temp = callback; dom.addEventListener(event, function() { if(temp) temp(); temp = null; }) }
このメソッドは可能ですが、問題があります。イベント処理関数はまだ存在しますが、何も実行されず、時間の経過とともに非常に肥大化します。
代わりの方法は、ハンドラー関数内で自身のブロックを解除することですが、匿名関数を使用すると、恐ろしい無限再帰に陥ってしまいます。
変数ストレージを使用することで解決できます。
function once(dom, event, callback) { var handle = function() { callback(); dom.removeEventListener(event, handle); } dom.addEventListener(event, handle) }
これはレジャーエンターテイメントです。一部の人々の助けになれば幸いです。
以上がjquery 1 つの関数メソッドの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。