<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Extend builtins, in particular - ie, `super()` allows your subclass to obtain internal slots it can't otherwise get.<div><br></div><div>Even if `class` were just sugar, I don't think I see the argument that that's a *good* thing to preserve.</div></div></blockquote><div><br></div><div>`Reflect.construct` allows subclasses to obtain internal slots without `super()` / class syntax.</div><div><br></div><div>

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">```js</span><br style="font-size:small;text-decoration-style:initial;text-decoration-color:initial"><div style="text-decoration-style:initial;text-decoration-color:initial"><div>const SubDate = function (...args) {</div><div>  const instance = Reflect.construct(Date, args, SubDate);</div><div>  return instance;</div><div>};</div><div><br></div><div>Object.setPrototypeOf(SubDate.prototype, Date.prototype);</div><div><br></div><div>const sub = new SubDate();</div><div>sub.getDate(); // has internal slots, does not throw</div><div>sub instanceof SubDate; // true</div><div>sub instanceof Date; // true</div></div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial">```</div></div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial">

<span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">This is the first I have heard `class` is anything but sugar.</span>

<br></div></div></div></div>