Hi Logan - that's correct. On Tue, Jun 2, 2015 at 11:08 PM Logan Smyth <loganfsm...@gmail.com> 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 <bren...@mozilla.org> 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 <d...@domenic.me <mailto: >>> d...@domenic.me>> 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 >>> es-discuss@mozilla.org >>> https://mail.mozilla.org/listinfo/es-discuss >>> >> _______________________________________________ >> es-discuss mailing list >> es-discuss@mozilla.org >> https://mail.mozilla.org/listinfo/es-discuss >> > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss