It doesn’t seem that big of a deal, but one risk is: people mistaking a class for a constructor, trying to subclass it as if it were a constructor and things failing silently.
> On 30 Mar 2015, at 07:49, Allen Wirfs-Brock <al...@wirfs-brock.com> wrote: > > >> On Mar 29, 2015, at 11:51 PM, Caitlin Potter <caitpotte...@gmail.com> wrote: >> >> ... >> >> Reflect.isConstructor(fn) -> true if Class constructor, generator, or legacy >> (and non-builtin) function syntactic form >> Reflect.isCallable(fn) -> true for pretty much any function, except for >> class constructors and a few builtins > > I’ve already seen another situation (node’s Buffer) where code could be > simplified by using a ES6 class definition but where that is prevented > because a class constructor throws when called. > > Just to clarify something. Class constructors actually are “callable”. You > can observe this by the fact that Proxy allows you to install an “apply” > handler (the reification of the [[[Call]] internal method) on a class > constructor. The the fact that an object can be [[Call]]’ed is already > reflected by the typeof operator. Class constructors throw when called > because at the last minute we choose to make their [[Call]] do an explicit > throw not because they aren’t callable. > > There is no intrinsic reason why we needed to mandate that class constructors > should throw when called. We even provided a simple and straight forward way > (new.target===undefined) that a ES constructor body can use to determine > whether it was called or new’ed. > > I think we should just drop that throws when called feature of class > constructors.. > > (The restriction was added to future proof for the possibility of inventing > some other way to provide a class with distinct new/call behavior. I don’t > think we need nor can afford to wait for the invention of a new mechanism > which will inevitably be more complex than new.target, which we already have.) > > Allen > > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss -- Dr. Axel Rauschmayer a...@rauschma.de rauschma.de
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss