Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #37121

Re: bind and addEventListener/removeEventListener

Newsgroups comp.lang.javascript
Date 2019-08-13 11:29 -0700
References <qiukun$4ck$1@csiph.com> <975e2d9e-b69c-4fe2-9ede-a88eddddb6f7@googlegroups.com>
Message-ID <4b5c991a-e951-40a6-b2ca-7baaac4cb78e@googlegroups.com> (permalink)
Subject Re: bind and addEventListener/removeEventListener
From Julio Di Egidio <julio@diegidio.name>

Show all headers | View raw


On Tuesday, 13 August 2019 17:43:17 UTC+2, Julio Di Egidio  wrote:
> On Tuesday, 13 August 2019 17:28:29 UTC+2, Cezary Tomczyk  wrote:
> > Bind 
> > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind 
> > creates a new function.
> > 
> > Let's say we have #1:
> > 
> > document.body.addEventListener('click', myExampleClass.method.bind(this));
> > 
> > and then:
> > 
> > document.body.removeEventListener('click', myExampleClass.method);
> > 
> > based on my research it should not be correct as the function created by 
> > bind is different than the original passed by reference in 
> > document.body.removeEventListener.
> > 
> > If it is not correct then the approach like:
> > 
> > var myRef = myExampleClass.method.bind(this);
> 
> myExampleObject please...
> 
> > document.body.addEventListener('click', myRef);
> > document.body.removeEventListener('click', myRef);
> > 
> > should be more appropriate, I guess.
> > 
> > Need some thoughts on that.
> 
> Sounds correct to me.

But I think you could in fact do something like this:

  document.body.addEventListener('click', myobj.method.bind(this));

  document.body.removeEventListener('click', myobj.method.bind(this));

as long as the two happen within the same closure...

My point being, the two handlers do not have to match by some kind of
low-level reference equality, it's about being the same closure (functions
are closures in JS) and the comparison is essentially lexical (JS is a
functional language).

(Anyone please correct me if I am wrong, cannot find the relevant piece of
documentation right now: but I do remember using e.g. inline functions and
other complications no prob...)

Julio

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

bind and addEventListener/removeEventListener Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2019-08-13 17:28 +0200
  Re: bind and addEventListener/removeEventListener Julio Di Egidio <julio@diegidio.name> - 2019-08-13 08:43 -0700
    Re: bind and addEventListener/removeEventListener Julio Di Egidio <julio@diegidio.name> - 2019-08-13 11:29 -0700
      Re: bind and addEventListener/removeEventListener Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2019-08-13 20:43 +0200
        Re: bind and addEventListener/removeEventListener Julio Di Egidio <julio@diegidio.name> - 2019-08-13 11:48 -0700
  Re: bind and addEventListener/removeEventListener Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-08-13 20:58 +0200
    Re: bind and addEventListener/removeEventListener Julio Di Egidio <julio@diegidio.name> - 2019-08-13 12:36 -0700

csiph-web