Le 02/10/2013 04:35, Andrea Giammarchi a écrit :
setTimeout accept extra arguments ... I write JavaScript that uses
this feature.
`setTimeout(callback, delay, arg1, arg2, argN, evenAnObject);`
What is "evenAnObject"? It doesn't look like a standard thing:
http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#windowtimers
so fat arrow does not solve much here, I can use self as first
argument and I am good.
`forEach` and all other arrays accept a second argument
`array.forEach(doStuff, boundContextObject);`
so fat arrow does not solve a thing in mostly all Array extras.
Both examples are most certainly design mistakes. It feels absurd that
every function accepting a function as argument must also have a second
argument for the |this| value (or even variable number of arguments to
be passed around). Especially in the ES5 era with Function.prototype.bind.
The design mistake is emphasized by the inconsistency in the order of
arguments in the 2 examples you provide.
I'm glad Node.js didn't make all async functions accept another argument
for |this|.
for **DOM** I use handlers as specified by **W3C**
Since when the DOM is specified by W3C? Must be about 10 years it isn't
the case anymore</troll> ;-)
Passing a function directly is standard too.
so that `{handleEvent: function () {this}}` works better than any mess
I could create with callbacks that I won't be unable to remove later
on (as I've said) ... so I can use `removeEventListener(this)` in
every method handled by that object.
Interesting trick.
But "won't be able to remove later on" is false:
document.addEventListener('DOMContentLoaded', function dcl(){
// whatev's
document.removeEventListener('DOMContentLoaded', dcl);
});
So I actually wonder what kind of JavaScript **you** write because
this was a honest question but probably ... people not familiar with
JS are the answer: since developers ignore part of JS specs available
since every then we need a fat arrow to break old syntax to make the
creation of self bound function easier.
One of the reason of arrow functions to exist is to get rid of the need
for "var self = this" or equivalent ('that', '_this', etc.). Example on MDN:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions#Lexical_this
I understand that in some cases, specs allow to pass |this| or
additional arguments, but it doesn't make it a good idea. I see the fact
that Node.js didn't take that road as a very strong signal.
David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss