Determine if a value is Callable/Constructible

Kevin Smith zenparsing at
Mon Mar 30 15:39:25 UTC 2015

> It doesn’t seem right that you should have to introduce an observable
> prototype property just to get [[Call]] behavior. (Or a constructor
> property, if you change the syntax to `static []() { … }`.)
> And it raises the question of what happens when I add a []
> property to other objects. What does it even mean? If I do `var obj = {
> prototype: { []() { console.log("foo"); } } }`, can I now call
> `obj()`? Is `typeof obj === "function"`? Very strange stuff. Presumably not
> very VM-friendly either, but that's just a guess.

I'd imagine that you'd re-spec [[Call]] for class constructors to basically
do `this[](...args)` instead of just throw.  It would therefore
only have an effect within class constructors.  Is that still weird?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list