> Le 19 janv. 2017 à 13:18, Isiah Meadows <[email protected]> a écrit :
> 
> Inline.
> 
> On Thu, Jan 19, 2017, 03:26 Claude Pache <[email protected] 
> <mailto:[email protected]>> wrote:
>> Le 17 janv. 2017 à 23:48, Isiah Meadows <[email protected] 
>> <mailto:[email protected]>> a écrit :
>> 
>> Out of curiosity, why are classes specified to have a [[Call]] internal 
>> method instead of special-casing `typeof` and friends to work with them? 
>> Somewhat of a tangent, but just a curious question on the design decision.
>> 
> 
> I guess that class constructors could have been specified without a [[Call]] 
> internal method, with the cost of amending all the places where 
> “constructible” implicitly implies “callable”.
> 
> FWIW, calling methods that don't have [[Call]] already throws a TypeError. So 
> it wouldn't affect necessarily all sites, especially if you continue to check 
> for [[Call]] in `Array.prototype.forEach` (like what is currently done), etc.
> 
> But why (and how) do you need “special-casing `typeof` and friends”? (The way 
> the question is formulated, avoiding special-casing would be an argument for 
> the current design. But I miss what are the special cases you have in mind, 
> especially regarding `typeof`.)
> 
> I was specifically referring to `typeof (class {}) === "function"`. The "and 
> friends" was in reference to things like the callback in 
> `Array.prototype.forEach`, which IIUC doesn't currently throw for classes if 
> the array has no members.

If you intend to have no observable difference, I don’t see the point to spec 
it another way just for introducing special cases here and there.

About typeof. If you insist that a class has no [[Call]] internal method, I 
think that `typeof class {}` must *not* be `"function"`. I have heard 
complaints that classes look like callable objects, but are not usable as 
callable objects in practice. It would not be nice to maintain that gotcha by 
an explicit special case.

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

Reply via email to