Hi Logan - that's correct. On Tue, Jun 2, 2015 at 11:08 PM Logan Smyth <[email protected]> wrote:
> To clarify things, since I don't think it's been made abundantly clear, > the example that Sebastian gave would work in a standard ES6 environment, > correct? It is only if the callback were executed synchronously that the > exception would be thrown since the `this` binding has not yet been > initialized? > Transpilers however have elected to prevent this to err on the side of > ensuring that invalid ES6 allowed through because adding runtime checking > for the `this` binding would be difficult? > > > > On Tue, Jun 2, 2015 at 7:37 PM, Brendan Eich <[email protected]> wrote: > >> With best intentions I must say that you are overreacting. The >> subject-line code (h/t Mark Miller for pointing me at it!) in context of >> the superclass constructor uses `this` before `super` has returned. That's >> a no-no for pretty-good reason. >> >> If you have a better alternative design, we needed it last month. As >> things stand, this is a thing to learn, with a workaround. What's the big >> deal? >> >> /be >> >> >> Matthew Robb wrote: >> >>> If I thought I could make any money then I would most definitely bet >>> that the changes made to classes that are at the root of this problem will >>> be the undoing of es classes and I find myself feeling more and more like >>> avoiding them is the easiest thing to do. >>> >>> This use-case is a perfect example of something that is EXTREMELY >>> unexpected which is funny because the changes are supposed to be supporting >>> subclassing of built-ins. >>> >>> Very disheartened :( >>> >>> >>> - Matthew Robb >>> >>> On Tue, Jun 2, 2015 at 6:43 PM, Domenic Denicola <[email protected] <mailto: >>> [email protected]>> wrote: >>> >>> Hmm I am pretty sure Babel et al. are correct here in not allowing >>> this. The super call needs to *finish* before you can use `this`. >>> Chrome also works this way. >>> >>> The correct workaround is >>> >>> ```js >>> let resolve, reject; >>> super((a, b) => { >>> resolve = a; >>> reject = b; >>> }); >>> >>> // use this >>> ``` >>> >>> >>> _______________________________________________ >>> 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 >> > > _______________________________________________ > 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

