jquery 1 つの関数メソッドの実装

巴扎黑
リリース: 2017-06-25 11:13:04
オリジナル
1815 人が閲覧しました

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!