Thanks for the motto. Another TIL. :)

My proposal is based on the assumption that people didn't complain much about 
it's easy to forget calling super in es5 code.

But I think you are right, preventing footgun is more important than catering 
to a hard case.

> On May 13, 2015, at 4:51 PM, Brendan Eich <[email protected]> wrote:
> 
> Glen Huang wrote:
>>> maybe subclassing that particular class is not the correct abstraction here;
>> 
>> I think the need for inheriting methods and the need for a totally different 
>> way of preparing the object are orthogonal.
> 
> There's a saying taught (I'm told) in law school: "hard cases make bad law."
> 
> It means systems of laws (real world or JavaScript language laws) must aim 
> for the common cases and avoid both over-prescribing or over-reaching, *and* 
> trying to cover all use-cases with all affordances. You can't "have it all", 
> in short.
> 
> Your case seems hard, at a glance. If you can show it's common, please cite 
> evidence.
> 
>> I wonder what's so terrible about creating a new object when there is no 
>> super that you just want to avoid it?
> 
> Your proposal was:
> 
> "TLDR: If `this` is used without `super` (which should be statically 
> analyzable), let it refer to Object.create(new.target.prototype). Otherwise, 
> let super creates what it refers to."
> 
> I think you meant "If `this` is used without `super` in a subclass 
> constructor (a subclass has an `extends` clause; this condition should be 
> statically analyzable), let it refer to Object.create(new.target.prototype). 
> Otherwise, let super creates what it refers to.
> 
> 
> We discussed this in the long course of coming to ES6 classes, if I recall 
> correctly. What you propose makes a footgun. It's too easy to forget to call 
> super and get an object that isn't correctly initialized. What you want to 
> do, bypass the super-constructor but wire up the proto-chain, can be done the 
> hard way, appropriate for a hard case (which makes bad law).
> 
> /be

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to