Determine if a value is Callable/Constructible

Allen Wirfs-Brock allen at wirfs-brock.com
Mon Mar 30 08:46:00 UTC 2015


> On Mar 30, 2015, at 10:12 AM, Axel Rauschmayer <axel at rauschma.de> wrote:
> 
>>> 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.
>>> 
>> Can you give an example of what you mean?
> 
> ```js
> class MySuperClass {}
> 
> // This function assumes that MySuperClass is an ES5 constructor function
> function MySubConstructor(foo) {
>     MySuperClass.call(this);
>     this.foo = foo;
> }
> MySubConstructor.prototype = Object.create(MySuperClass.prototype);
> MySubConstructor.prototype.constructor = MySubConstructor;
> ```

so if MySuperCall didn’t have the throw on [[Call]] behavior the above would work just fine.

Allen



More information about the es-discuss mailing list