FW: javascript vision thing

Andrea Giammarchi andrea.giammarchi at gmail.com
Fri Nov 3 12:31:19 UTC 2017


I agree with everything else you said but since you mentioned the word
"misinformed" I'd like to improve this misleading sentence:

> It's 99% sugar over the existing prototype-based model

This has been one of the most misunderstood and undertaken parts of ES6.

Classes are *not* just sugar, thinking about classes as just sugar that can
be replicated on ES5 is FUD and even if I've pointed out Babel
documentation has a wrong description of classes it's still there and 99%
of developers believe classes are like that, just sugar over prototypal
inheritance.

This is so wrong that TypeScript fails with the most basic extend:

```js
class List extends Array { method() {} }

(new List) instanceof List; // false
(new List).method(); // throws because it's not a List so no method
```

To simulate ES2015 classes you need `Reflect.construct`, unavailable in ES5.
Polyfilling Reflect.construct with ES5 features is not enough: you need
Symbols too.

Symbols are technically impossible to polyfill (i've gone very close, yet
not a perfect poly).
Symbols are needed to keep the instance so that in a transpiled world:

```js
(new List).slice() instanceof List; // true
```

Most developers that went for classes have broken code out of the box
thanks to transpilers and yet at the end of 2017 we keep writing that ES
classes are just sugar on top of ES5.

We should stop starting from this ML to keep spreading this wrong
information.

Thank you all for your understanding.

Regards







On Fri, Nov 3, 2017 at 4:49 AM, Isiah Meadows <isiahmeadows at gmail.com>
wrote:

> Honestly, this entire thread reads as partially misinformed,
> borderline trollbait. These kinds of questions and thoughts should
> really be asked directly (and a bit more respectfully) to TC39
> representatives and/or put in blog posts wherever. es-discuss is
> primarily about language design, and although the subject implies it's
> about the language's design in the abstract, I'm not convinced the
> content and responses really are.
>
> 1. Claims of a language "civil war" don't belong on this list, and are
> objectively false. Yes, there's disagreement, but even TC39 members
> aren't exactly in agreement here - consider the difference between
> Lodash/Ecmarkdown (Domenic Denicola) and Ecmarkup (Brian Terlson).
> Please take that into account.
> 2. Yes, there are multiple idiomatic uses of JavaScript, but it's
> large enough you can carve out a subset and be done with it. You don't
> like classes? Don't use them. You don't like arrow functions? Don't
> use them. You don't like `array.map`? Don't use it. Just because they
> exist doesn't obligate you to use them, and they don't hurt you in any
> way if you don't. Also, complaints of a person's or group's choice of
> idiom do *not* belong on this list whatsoever. Leave that crap to a
> private message, a blog post (if it's a group), or whatever.
> 3. JavaScript "classes" are not technically class-based OOP, and TC39
> members have acknowledged this in blog posts. It's 99% sugar over the
> existing prototype-based model, just with easier native subclassing.
> You could in theory replicate this in the rest of the language with a
> combination of `Object.defineProperty`, `Object.setPrototypeOf`,
> `new.target`, and existing ES5.
> -----
>
> Isiah Meadows
> me at isiahmeadows.com
>
> Looking for web consulting? Or a new website?
> Send me an email and we can get started.
> www.isiahmeadows.com
>
>
> On Thu, Nov 2, 2017 at 4:32 PM, doodad-js Admin <doodadjs at gmail.com>
> wrote:
> >
> > -----Original Message-----
> > From: Claude Petit [mailto:petc at webmail.us]
> > Sent: Thursday, November 02, 2017 4:24 PM
> > To: 'kai zhu' <kaizhu256 at gmail.com>; 'es-discuss' <
> es-discuss at mozilla.org>
> > Subject: RE: javascript vision thing
> >
> > For mostly real OOP under JS, please see my project (doodad-js). But I
> can't warranty its future without a custom language because nobody on TC39
> want to works along-side with me on that project, and they are making their
> own supposed "classes" which are not.
> >
> > -----Original Message-----
> > From: kai zhu [mailto:kaizhu256 at gmail.com]
> > Sent: Wednesday, November 01, 2017 11:43 PM
> > To: es-discuss <es-discuss at mozilla.org>
> > Subject: javascript vision thing
> >
> > any thoughts? i'll break the ice with a quora question i recently
> answered
> >
> > quora question:
> >> Why is JavaScript so hated?
> >
> > answer posted:
> >>the primary reason is because traditional oop skills gained from
> c#/c++/java/python/etc translate poorly to javascript.
> >>
> >>in javascript, class-instantiated objects are inferior to plain-objects,
> because plain-objects come with JSON.stringify/JSON.parse baked-in, while
> classes require needless extra serialization/deserialization routines which
> can easily double your codebase or more (as real-world javascript-code is
> heavily i/o based). i would say many people burn-out from
> frontend-programming because they can’t cope with debugging all the i/o
> edge-cases serializing/deserializing their custom classes.
> >>
> >>javascript and frontend-programming is essentially about efficiently
> managing the program-state like a baton, constantly passing it
> back-and-forth between the browser’s ui and various backend-servers /
> persistent-storage. plain json-objects utilizing idiot-proof
> JSON.stringify/JSON.parse, are naturally better at this baton-passing
> business than writing classes with custom serializers.
> >
> >
> >
> > there's currently a civil war going on in frontend-development, between
> those who don't want to deal with writing extra class-based
> serializers/deserializers and those who do.  these 2 different design
> patterns have incompatible styleguides that often break web-projects when
> people try to mix-and-match both together.  i don't have a simple solution
> to this issue, but tc39 should be made aware of it as they try to formulate
> a javascript vision that doesn't alienate frontend-development.
> >
> > -kai
> >
> >
> >
> > ---
> > This email has been checked for viruses by AVG.
> > http://www.avg.com
> >
> > _______________________________________________
> > es-discuss mailing list
> > es-discuss at mozilla.org
> > https://mail.mozilla.org/listinfo/es-discuss
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20171103/b52d7443/attachment.html>


More information about the es-discuss mailing list