<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I don't know if I would write:<br>
<br>
  class Foo extends Bar {<br>
    constructor (x) { ... }<br>
    method1 () {}<br>
    method2 () {}<br>
  }.prototype.{<br>
    commonNum: 0,<br>
    commonColl: []<br>
  }<br>
<br>
or<br>
<br>
  function Foo (x) extends Bar {<br>
    ...<br>
  }.prototype.{<br>
    method1 () {}<br>
    method2 () {}<br>
    commonNum: 0,<br>
    commonColl: []<div><div><br>
  }<br><br></div></div></blockquote><div>If it were me, I would question the use of putting either commonNum or commonColl on the prototype. commonNum is not as big a deal, but commonColl is just asking for trouble. Modifying the commonColl array from an instance will affect all other instances, but replacing it from an instance will just mask it. If the first is the desired purpose, it would be better places outside the class and captured in a closure variable. If the latter is desired, it would be better to just put it inside the constructor function. Avoiding non-methods steers us clear of controversy and still gets us the 80%.</div>
<div><br></div><div>As for the rest,</div><div><br></div><div>    function Foo() extends Bar {...}</div><div><br></div><div>can easily be written as</div><div><br></div><div>    class Foo extends Bar {</div><div>        constructor(){...}</div>
<div>    }</div><div><br></div><div>so if it came down to only one I would take class, because I think it hits a bigger sweet spot. I'm not opposed to both, though, and have written as much in other proposals.</div><div>
<br></div><div>- Russ</div>
</div><br>