<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On May 18, 2011, at 10:58 AM, Bob Nystrom wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">On Mon, May 16, 2011 at 8:02 AM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com">brendan@mozilla.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">

<div style="word-wrap:break-word"><div><div class="im"><div>On May 16, 2011, at 4:54 AM, Dmitry A. Soshnikov wrote:</div><blockquote type="cite"><div text="#000000" bgcolor="#ffffff">Regarding `new` keyword for the constructor (aka initializer), after
    all, it als may be OK. E.g. Ruby uses `new` as exactly the method of
    a class -- Array.new, Object.new, etc. Though,  `constructor` is
    also good yeah.<br></div></blockquote><div><br></div></div>My point is not to bikeshed, rather (a) to name existing prototype properties minimally, (b) to avoid preempting other names.</div></div></blockquote><div><br>

</div><div>Using "new" for the constructor is one of my favorite feature's of Allen's proposal. Things I like about it:</div><div><br></div><div>1. It's terse. Since almost every class defines a ctor, this is helpful. "constructor" is a mouthful and repeating the full class name (like in Java, C++, etc.) is redundant.</div></div></blockquote><div><br></div>The whole of class declaration is a mouthful. 'function' and 'prototype' are overlong too. We can try for conciseness in this one corner but it doesn't help in general. I think we need to weight the whole syntax and see where the verbosity *and other* pain points are in practice.</div><div><br></div><div><br><blockquote type="cite"><div class="gmail_quote">

<div>2. I think it's pretty clear to a user what's going on.</div></div></blockquote><div><br></div>Same with 'constructor', and that property must exist somehow. Why not be explicit and avoid having two names for one prototype property?</div><div><br></div><div><br><blockquote type="cite"><div class="gmail_quote"><div>3. It avoids stealing a valid identifier. You can't define a method named "new" but "constructor" is a valid property name.</div></div></blockquote><div><br></div><div>3 is false in ES5. Reserved identifiers are valid property names. This is implemented in all the ES5-supporting browsers.</div><div><br></div><div>/be</div></div></body></html>