2016-07-19 13 views
0

別のスタックによれば、オーバーフロー質問 "Are two functions equal?"は、ある機能が他と等しいかどうかを確認することはできません。removeEventListenerはどのように実装されていますか?

これは私がどのようにtarget.removeEventListener(type, listener)が実装されているのだろうかと思います。

は私のサンプルコードを守ってください。

function eventHandler() { 
    alert("hello!"); 
    document.removeEventListener("click", eventHandler); 
} 
document.addEventListener("click", eventHandler); 

私は警告ボックスがポップアップし、私が表示されます文書内の任意の場所をクリックすると、「こんにちは!」。アラートボックスを閉じてもう一度ドキュメントの任意の場所をクリックすると、何も起こりません。

もちろん同じイベントの同じターゲットに複数のリスナーを登録することはできます。 私は同じ名前の複数のリスナーを登録することもできます

どのように動作しますか?

+0

あなたがここでやっているのは、関数を参照することです。機能の比較は行われていないので、あなたが運転しているものがわからない。 – Utkanos

答えて

1

異なる機能が同等である場合は、伝えることはできませんが、同じ機能を参照2かの変数を伝えることができます。これらは、2つの異なる概念です:は、removeEventListenerメソッドは、指定されたイベントのイベントハンドラのリストを持っている場合

function add(a,b) { 
 
    return a+b; 
 
} 
 
function add2(a,b) { 
 
    return a+b; 
 
} 
 
    
 
var myAddFn=add; 
 
    
 
console.log(myAddFn===add) //true 
 
console.log(myAddFn===add2) //false

そして、それはちょうどそれらを通過し、削除することができます必要な1

関連する問題