removeEventListenerで削除するlistenerを識別する内部的な仕組み


リスナーの登録は

[code]

    var listener = function(){
      console.log('click')
    };
    element.addEventListener('click', listener);
    
[/code]

登録したリスナーを削除するには

[code]

    element.removeEventListener('click', listener);
    
[/code]

例えば以下のようにlistenerを書き換えてしてremoveEventListenerすると登録されたlistenerは削除されません。

[code]

    var listener = function(){
      console.log('click')
    };
    element.addEventListener('click', listener);
    listener = function(){
      console.log('click')
    };
    element.removeEventListener('click', listener);
    
[/code]

このremoveEventListenerでlistenerを引数にして登録されてるlistenerを識別して削除されるのは内部的にどういう仕組みでしょうか？




自己解決しました。関数同士を比較することできたんですね。。。知らなかったです。

[code]

    var hoge = function(){};
    var foo = hoge;
    var bar = hoge;
    console.log(hoge === bar); // => true
    hoge = function(){};
    console.log(hoge === bar); // => false
    console.log(foo === bar); // => true
    
[/code]




自己解決しました。関数同士を比較することできたんですね。。。知らなかったです。

[code]

    var hoge = function(){};
    var foo = hoge;
    var bar = hoge;
    console.log(hoge === bar); // => true
    hoge = function(){};
    console.log(hoge === bar); // => false
    console.log(foo === bar); // => true
    
[/code]

