Allen Wirfs-Brock (2014-06-16T22:39:21.000Z)
domenic at domenicdenicola.com (2014-06-20T19:38:31.561Z)
Based upon the above, I don't think I completely misunderstood the semantics you have in mind for @@new. It sounds like you are saying that a @@new method would provide all the legacy "as as a constructor behavior" and that the constructor body would provide the legacy "called as a function" behavior. But presumably to enable: function f(x) {this.x = x} to do the expected thing the default @@new behavior would have to call into the regular body of the function. In that case, aren't you right back with the same problems of trying to discriminate in a function like f whether it is being called independently or called to initialize something created by @@new? Perhaps you could fill out what you actually mean by @@new and how it would work for regular functions, class declarations, and subclasses of both regular classes and the legacy built-ins.