The forEach method might not do what you expect it to. This can not be statically determined.
- peter On 9 Nov 2011 16:10, "John J Barton" <[email protected]> wrote: > On Wed, Nov 9, 2011 at 3:41 AM, David Bruant <[email protected]> wrote: > > Le 09/11/2011 02:26, Andrew Paprocki a écrit : > >> > >> On Tue, Nov 8, 2011 at 6:36 PM, Brendan Eich<[email protected]> > wrote: > >>> > >>> Ignoring performance, a lot of stylish JS hackers use > >>> Object.keys(o).forEach. How many run into the wrong |this| > >>> (arguments/break/continue/return)? Not clear. Something to study. > >> > >> I was curious so I did some grok-ing across my code sample and > >> Object.keys() is barely used. The usage of the |for in| construct is 2 > >> orders of magnitude larger than the usage of hasOwnProperty(), > >> supporting the thought that no one really does it the "right" way. > >> > >> The MDN page for Object.keys does not talk about |this| being wrong in > >> certain situations. If you could elaborate on that, it would be > >> helpful to know. > > > > The |this| differs between the body of a for-in and the argument > callback in > > the .forEach. Nothing to do with Object.keys. .forEach has a second > optional > > argument which is the value to be used as |this| so that you don't have > to > > do a .bind. > > I'm sure this has been discussed before, but isn't is possible and > desirable to make |this| illegal in "using strict;" when it can be > determined from the AST alone that |this| will bind to |window|? eg: > > Object.keys(foo).forEach(function(key) { > // this is undefined-> window > }); > > This case kind of case is because, as others have noted, incorrect > |this| binding most often occurs in two cases: 1) mixed OO and > functional programming (as above) and 2) callback defn. > > Perhaps it is harder to detect than I think. > > jjb > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

