<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Sep 29, 2011, at 6:20 PM, Brendan Eich wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Sep 30, 2011, at 1:11 AM, Erik Arvidsson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On Thu, Sep 29, 2011 at 17:08, Bob Nystrom <<a href="mailto:rnystrom@google.com">rnystrom@google.com</a>> wrote:<br><blockquote type="cite">class Monster {<br></blockquote><blockquote type="cite">  constructor(<a href="http://this.name/">this.name</a>, this.health) {}<br></blockquote></div></blockquote><div><br></div>I <3 this. It beats the (public name, public health) variant in my view by being explicit and not dragging in p-words.</div></div></blockquote><div><br></div><div>I dislike it as it conflates assignment with declaration.</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div><div><br></div>This is great, and I'm still a sections fan, but they mix badly if there are any hints or smells of object literal data property initialiser synax. You (Bob) dodge that by using let, Oliver used var (and IIRC Bob started with var; so did ES4) -- however, Oliver and ES4 by fiat put data properties on the instance, methods on the prototype.</div><div><br></div><div>Separately, and a while ago, Alex pointed out that mutable prototype data properties, e..g let attackers = []; in this Monster example, are a footgun. People fail to shadow and mutate a shared singleton.</div><div><br></div><div>So why do we need declarative syntax for data properties on the prototype at all? Data properties on prototypes are exceedingly rare and usually a bug.</div></div></blockquote><div><br></div><div>Agreed.  If anything people want constants on "the class"</div></div><br><div>--Oliver</div></body></html>