<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jan 22, 2012, at 10:29 PM, Brendan Eich wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div><blockquote type="cite">1) should .@ member access and @ object literal property definitions permit he property key to be any toString-able value and not just private name values?  The current plan of record does not require a private name value in the analogous contexts.<br></blockquote><blockquote type="cite">I'm slightly inclined towards requiring private name values, but would be happy either way.<br></blockquote><br>As noted above, I'm inclined toward requiring private name objects on the right of @.</div></span></blockquote></div><br><div>It seems like an unfortunate inconvenience to require any code refactoring and lose the shorthand @ this-access if you just want to make a private property on an object be public.  Instead of just restricting the token to the right of a @ or .@ construct be a private name, perhaps it would be useful to also permit an explicitly declared public name?</div><div><br></div><div><div><span class="Apple-tab-span" style="white-space: pre; ">    </span>private x,y;</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>function point(x,y) {</div><div><span class="Apple-tab-span" style="white-space: pre; ">             </span>@x = x;</div><div><span class="Apple-tab-span" style="white-space: pre; ">           </span>@y = y;</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>}</div><div><div><br></div><div>can easily be transformed into:</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>public x,y;</div><div><span class="Apple-tab-span" style="white-space: pre; ">       </span>function point(x,y) {</div><div><span class="Apple-tab-span" style="white-space: pre; ">             </span>@x = x;</div><div><span class="Apple-tab-span" style="white-space: pre; ">           </span>@y = y;</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>}</div><div><br></div></div></div><div>This would still provide a guard against typos, whilst giving convenient access to public properties on the this object.</div><div><br></div><div>cheers,</div><div>G.</div><div><br></div></body></html>