30322


リスナーの登録は

[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を識別して削除されるのは内部的にどういう仕組みでしょうか？


CC BY-SA 3.0
2016-11-11T06:32:25.470
30321
2016-11-11T06:58:51.917
2016-11-11T06:58:38.053
19526
19526
question
javascript
removeEventListenerで削除する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]


CC BY-SA 3.0
2016-11-11T06:58:51.917
30322
2016-11-11T06:58:51.917
19526
30321
answer