野生の手淫事件😮 !!!
10948 ワード
さあ、私たちには、DOM要素があります
以下に2つの方法があります.
ここでは、
冗談は脇にalways そこへ行った.それはほとんど話されていません.そして、私が解決したとき、私はこれに遭遇しましたthis StackOverflowの質問と私の心はblowwwwnn!
また、このようにイベントリスナーを削除できます
このように見えます.
このコードの使用例を見てみましょう
あなたが明示的にしたいなら
匿名または匿名で
その場合、別のインスタンスを作成できます
それはまだ私に新しい概念です、そして、多分、私は若干の間違った結論を導きました.しかし、私はそれについてより多くを知って幸せ以上です.ご存知ですか.もしそうならば、あなたはこれを使いましたか?あなたはそれを好むか?任意のボトルネック?コメントを投稿するには💪.
あなたはthis 記事へのより多くの洞察のために
ここでは、この実装で遊ぶことができるcodepenです.
element
そして、イベントリスナーを追加します.どうやってそうするの?以下に2つの方法があります.
const handleClick = () =>{console.log('You can remove me later safely')}
element.addEventListener('click',handleClick);
element.addEventListener('click',()=>console.log('Try and remove me noob'));
今、これらのイベントリスナーを削除することになると、それは匿名のため、2番目の1つを削除することはできませんし、最初の1つだけで行うことができますelement.removeEventListener('click',handleClick);
私があなたに方法と構文があるとあなたに話すならば、それがイベントリスナーに来るとき、あなたはよく知らないかもしれませんか?ここでは、
const someObj = {
handleEvent: (e)=>console.log(`I am ${e.type} event`);
}
element.addEventListener('click',someObj);
そして-冗談は脇にalways そこへ行った.それはほとんど話されていません.そして、私が解決したとき、私はこれに遭遇しましたthis StackOverflowの質問と私の心はblowwwwnn!
また、このようにイベントリスナーを削除できます
element.removeEventListener('click',someObj);
これを見つけた後、私は、私が最小の最小を作るかどうか、私自身に思いましたHandler
登録と登録解除ビットを抽象化でき、同じ原理で働くクラス?このように見えます.
class Handler {
#element
#eventMap = {}
constructor(element, eventMap) {
this.#element = element
this.register(eventMap)
}
handleEvent(e) {
this.#eventMap[e.type](e)
}
register(eventMap) {
this.#eventMap = { ...this.#eventMap, ...eventMap }
Object.keys(this.#eventMap).forEach((event) => {
this.#element.addEventListener(event, this)
})
}
unregister(event) {
this.#element.removeEventListener(event, this)
}
unregisterAll() {
Object.keys(this.#eventMap).forEach((event) => {
this.#element.removeEventListener(event, this)
})
}
}
しかし、何が私をクラス実装のために行かせましたか?さて、我々は我々がオブジェクトを渡すことができるということを知っていますadd/removeEventListener
, 我々は、カスタムを持つことができますHandler
クラス内部this
はオブジェクトインスタンスを指し、使用に入ります.このコードの使用例を見てみましょう
const handler = new Handler(element, {
click: ()=>console.log('Yo I am clicky'),
focus: ()=>console.log('FOCUS!!!'),
});
それは何のためにそれを行うelement
, それぞれのイベントに対して匿名関数を登録します.そして、あなたがもう一つの機能を登録するためにさらに行くならばclick
このように- handler.register({
click: () => console.log('Well I am new clicky')
});
これは既存のclick
関数は、削除を処理する心配がなく、新しい匿名関数を追加しました.あなたが明示的にしたいなら
unregister
the click
どうやってそうするの?handler.unregister('click');
匿名または匿名で
Handler
クラスは、各イベントタイプに対して、同じ要素に対して1つの関数だけを登録することを保証します.しかし、同じ要素のために同じイベントタイプのために複数の機能を登録したいならば、どうですか?その場合、別のインスタンスを作成できます
Handler
同じクラスelement
そして、それに責任を負わせてください.それはまだ私に新しい概念です、そして、多分、私は若干の間違った結論を導きました.しかし、私はそれについてより多くを知って幸せ以上です.ご存知ですか.もしそうならば、あなたはこれを使いましたか?あなたはそれを好むか?任意のボトルネック?コメントを投稿するには💪.
あなたはthis 記事へのより多くの洞察のために
handleEvent
. ここでは、この実装で遊ぶことができるcodepenです.
あなたの時間をありがとう
Reference
この問題について(野生の手淫事件😮 !!!), 我々は、より多くの情報をここで見つけました https://dev.to/lakbychance/a-wild-handleevent-appeared-1f48テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol