<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 15, 2014, at 11:45 PM, Tom Van Cutsem wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">2014-06-13 19:21 GMT+02:00 Allen Wirfs-Brock <span dir="ltr"><<a href="mailto:allen@wirfs-brock.com" target="_blank">allen@wirfs-brock.com</a>></span>:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><span style="color:rgb(34,34,34)">Anotherconcern I have with @@new, it that it exposes two extension points, @@new and @@create, on very constructor.  I'm afraid that it wouldn't be very clear to most ES programmers when you should over-ride one or the other.</span><br>
</div></div></blockquote><div><br></div><div>Smalltalk has both extension points (#new and #initialize). I think JS programmers could handle this just as well.</div></div></div></div></blockquote>and #basicNew.  It seeded to me that many Smalltalk programmer were unclear about when to over-ride #new vs when to over-ride #basicNew. <br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Finally, let's say that for ES6 we eliminate [[Construct]] without adding @@new. If after some experience we find that @@new is really needed we can easily add it in a backwards compatible manner.<br></blockquote><div>
<br></div><div>By that time, the community will have developed its own set of work-arounds, as it always does.</div><div><br></div><div>In any case, I believe you're probably right that @@create + constructor invocation is sufficient for most use cases. The crucial step is that if the constructor returns an object, this is the object returned by |new C(...args)|. This way, the constructor can always return a cached object and ignore whatever dummy object was created by @@create. Correct?</div></div></div></div></blockquote><div><br></div><div>right.</div><div><br></div><div>Allen</div></div></body></html>