Hi David,<div><br></div><div>I believe the relevant use cases here were value types/value proxies, which - if added in the future - would want their constructors to return non-object values. I searched the archives but can't seem to find the relevant threads, still, I'm sure it was discussed here previously.</div>
<div><br></div><div>Cheers,</div><div>Tom<br><br><div class="gmail_quote">2011/9/23 David Bruant <span dir="ltr"><<a href="mailto:david.bruant@labri.fr">david.bruant@labri.fr</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
<br>
In ES5.1 - 13.2.2 is defined functions instances [[Construct]]. As one can notice, it always returns something of type Object (as per ES5.1 - 8.6). Consequently, a call to "new A()" always reliably either returns an object or throws an exception.<br>

<br>
Proxies semantics of [[Construct]] states that (step 5) the [[Call]] internal method of constructhandler should be called. It opens the door to returning things which are not objects (number, boolean, undefined, ...).<br>

<br>
I can't think of precedents of this for host objects and I don't really see a use case in allowing "new A()" to return something else than an object<br>
<br>
When writing functions intended to be used as constructors, people may be used of |this| being used as the to-be-returned object and expect this behavior even if defining a constructor.<br>
<br>
So i would be in favor of adding a type check between step 5 and 6.<br>
<br>
David<br>
______________________________<u></u>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/<u></u>listinfo/es-discuss</a><br>
</blockquote></div><br></div>