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