<div dir="ltr"><div><span style="color:rgb(33,33,33);font-family:sans-serif;font-size:13px">I can see that, although I'm struggling to come to that conclusion if I saw that block of code fresh. I don't think it would be immediately clear, though. In your interpretation of "this has 5 arguments", what would you expect them to be? `constructor(x, y, a, b, c)`? Just prepend them?</span><br></div><div><div class="gmail-uyb8Gf" style="color:rgb(33,33,33);font-family:sans-serif;font-size:13px"><div class="gmail-F3hlO"><div dir="ltr" style="unicode-bidi:isolate"><div><br></div><div>I'm trying to work with the idea of the existing constructor function and a possible shorthand. Another problem with almost any suggestion is how it may interact with destructuring and expectations (with any additions of "bind these").</div><div><br></div><div>I am highly suspect that any solution that is both ergonomic and concise could pass.</div><div><br></div><div>What about making an explicit `constructor` function invalid in the case of the shorthand syntax?</div><div><br></div><div>```js</div><div>class Point(x, y) {</div><div>   ...</div><div>}</div><div><br></div><div>// As shorthand for:</div><div>class Point {</div><div>  constructor(x, y){</div><div>    this.x = x;</div><div>    this.y = y;</div><div>  }</div><div>}</div><div>```</div><div><br></div><div>If this kind of syntax can't fly, that's fine, but I feel there isn't going to be an ergonomic way to have a simple way to bind constructor arguments. Although that makes things like super calls potentially awkward, we can also assume that if you extend a class that it calls super in the generated constructor. I'm not offended by a short hand as my last post, as the transition is quite natural if you need a more complex use case:</div></div></div></div><div><div class="gmail-uyb8Gf" style="color:rgb(33,33,33);font-family:sans-serif;font-size:13px"><div><div class="gmail-F3hlO"><div dir="ltr" style="unicode-bidi:isolate"><div><br></div><div>```js</div><div>class Point(x, y) {<br></div><div>  toString() { ... }</div><div>}</div><div><br></div><div>// Oh no, now I have complex logic!</div><div><div>class Point {<br></div><div>  constructor(x, y) {</div><div>    Object.assign(this, {x, y});</div><div>    ...</div><div>  }</div><div><br></div><div>  toString() { ... }<br></div><div>}</div></div><div>```</div></div></div></div></div><div class="gmail-uyb8Gf" style="color:rgb(33,33,33);font-family:sans-serif;font-size:13px"><br class="gmail-Apple-interchange-newline"></div></div></div></div>