That, and that the existing builtins already impose those limitations - and only `class` allows you to do those things, with them.
On Mon, Jul 23, 2018 at 3:52 PM, Ben Wiley <[email protected]> wrote: > I see, so it's not that you can't do things without class as much as you > can impose limitations by using class. Thanks for clarifying > > Le lun. 23 juill. 2018 18 h 49, Jordan Harband <[email protected]> a > écrit : > >> When extending builtins, `super()` is the only way you can get the >> appropriate internal slots applied to the instance. (Private fields work >> the same way by providing a matching guarantee - that the only way someone >> can subclass you successfully is using `class extends` and `super`) >> >> On Mon, Jul 23, 2018 at 3:43 PM, Ben Wiley <[email protected]> >> wrote: >> >>> What exactly can be accomplished with super that can't be accomplished >>> otherwise? I know the transpiled code is very verbose and unintuitive to >>> read if you avoid explicitly naming the base class, but I wasn't aware of >>> new capabilities that were previously impossible. >>> >>> Ben >>> >>> >>> Le lun. 23 juill. 2018 18 h 06, Ranando King <[email protected]> a >>> écrit : >>> >>>> Granted about `super()`. That's the one thing I can't easily reproduce. >>>> However, barring those internal slots, I can reproduce the functionality of >>>> `super` and the checks performed as a result of the internal slots, all in >>>> ES6. As for built-ins, I can easily and properly extend builtins without >>>> `class` since ES6 officially has `Object.setPrototypeOf()`. If you don't >>>> think it's possible, you should take a close look at what I'm doing in the >>>> repl.it link from my first post. >>>> >>>> As for whether or not the sugary nature of `class` is a good thing, it >>>> really is a matter of opinion. I just happen to be of the persuasion that >>>> since there's literally no construct that `class` can produce that I cannot >>>> reproduce by other means, then that means the `class` keyword (even in >>>> light of `super`) is little more than syntactic sugar. As such, we >>>> shouldn't be so hasty to turn an Object Oriented Prototype Based language >>>> into an Object Oriented Class Based language. The only way to do that >>>> reasonably is to ensure that whatever you can construct with `class` can >>>> always be equivalently constructed without it. >>>> >>>> Here's a more logical argument instead. Even if there are subtle >>>> differences between `class` constructors and object factory functions, >>>> providing an isolated path specific to `class` is likely to lead to >>>> situations very similar to what happens when an open source package gets >>>> forked. Eventually, the difference between the two paths may become so >>>> great that one is eventually abandoned (by developers) in favor of the >>>> other. This is only a valid argument because the power of ES is in it's >>>> simplicity. It's like building a house with wood, nails, sheetrock, etc... >>>> (JS) vs. building a house with pre-fabricated parts (class-based >>>> languages). >>>> >>>> Don't get me wrong. The `class` keyword is a great thing. It simplifies >>>> the production of creating object factories with prototypes. As I >>>> understand it, that was the purpose. Let's not make the mistake of allowing >>>> something to be done with `class` that cannot be reasonably reproduced >>>> without it. The moment we do that, we're diverging from the intended >>>> purpose of `class`. >>>> >>>> >>>> >>>> On Mon, Jul 23, 2018 at 4:17 PM Jordan Harband <[email protected]> >>>> wrote: >>>> >>>>> Extend builtins, in particular - ie, `super()` allows your subclass to >>>>> obtain internal slots it can't otherwise get. >>>>> >>>>> Even if `class` were just sugar, I don't think I see the argument that >>>>> that's a *good* thing to preserve. >>>>> >>>>> On Mon, Jul 23, 2018 at 2:05 PM, Ranando King <[email protected]> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> ---------- Forwarded message --------- >>>>>> From: Ranando King <[email protected]> >>>>>> Date: Mon, Jul 23, 2018 at 4:04 PM >>>>>> Subject: Re: proposal: Object Members >>>>>> To: <[email protected]> >>>>>> >>>>>> >>>>>> You've made that argument before. Exactly what is it in ES6 that you >>>>>> **can** do with `class` that you cannot do without class? I'd like some >>>>>> clarification on this. >>>>>> >>>>>> On Mon, Jul 23, 2018 at 3:30 PM Jordan Harband <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> `class` is already not just syntactic sugar, so that notion isn't >>>>>>> correct, and shouldn't be maintained. >>>>>>> >>>>>>> On Mon, Jul 23, 2018 at 12:38 PM, Ranando King <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> I've written up a new draft proposal based on my own work with ES5 >>>>>>>> & ES6 compatible classes with fields. That can be found [here]( >>>>>>>> https://github.com/rdking/proposal-object-members). I'm already >>>>>>>> aware of the class-members proposal, but I think it breaks far to many >>>>>>>> things and doesn't do anything to maintain the notion that "`class` is >>>>>>>> just >>>>>>>> syntactic sugar". >>>>>>>> >>>>>>>> This proposal is specifically based on the code [here]( >>>>>>>> https://github.com/rdking/Class.js/tree/master/es6c). I've also >>>>>>>> got a [repl.it](https://repl.it/@arkain/Classjs-Compact-Syntax-ES6) >>>>>>>> that shows the same code running. >>>>>>>> >>>>>>>> The idea behind the proposal is that instead of injecting a lot of >>>>>>>> new logic into how `class` works, let's allow `class` to remain >>>>>>>> syntactic >>>>>>>> sugar, and put that extra ability into object declarations instead. >>>>>>>> Then >>>>>>>> simply allow `class` to do the same with it's own prototypes. >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> 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

