Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #37121
| 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> |
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
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