I'd think with the advent of private fields a much more common (and better)
use case would not involve creating publicly visible properties - how might
that work?
Perhaps this:
```js
class Foo {
constructor(#x, #y) { }
}
```
On Sat, Mar 18, 2017 at 11:00 AM, just nobody <[email protected]> wrote:
> Inherited methods would inherit the same behavior, since this is just
> syntactic sugar after all.
> ```js
> class Point {
> setPosition(this.x, this.y) {}
>
> // same as
> // setPosition(x, y) { this.x = x; this.y = y }
> }
>
> class Rectangle extends Point {
> setSize(this.width, this.height) {}
>
> // same as
> // setSize(width, height) { this.width = width; this.height = height }
> }
>
> let rect = new Rectangle()
> rect.setPosition(0, 0)
> rect.setSize(50, 50)
> rect // { x: 0, y: 0, width: 50, height: 50 }
> ```
>
> On Sat, Mar 18, 2017 at 7:12 AM Michael J. Ryan <[email protected]>
> wrote:
>
>> Interesting concept... What about inheritance?
>>
>> --
>> Michael J. Ryan - [email protected] - http://tracker1.info
>>
>> Please excuse grammar errors and typos, as this message was sent from my
>> phone.
>>
>> On Mar 18, 2017 12:03 AM, "just nobody" <[email protected]> wrote:
>>
>> Would it be possible to have syntax like this? It's a feature supported
>> by other JS variants in some way (CoffeeScript, TS) that feels missing from
>> the spec. It's mainly useful as a convenient, terse way of setting
>> properties of an object on initialization.
>>
>> ```js
>> class Rectangle {
>> constructor (this.x, this.y, this.width, this.height) {}
>> setPosition(this.x, this.y) {}
>> setSize(this.width, this.height) {}
>> }
>>
>> // equivalent to
>> class Rectangle {
>> constructor (x, y, width, height) {
>> this.x = x
>> this.y = y
>> this.width = width
>> this.height = height
>> }
>>
>> // ...
>> }
>>
>> // for regular constructor functions as well
>> function Rectangle (this.x, this.y, this.width, this.height) {}
>> ```
>>
>> Deconstructing and argument defaults should all work similarly
>> ```js
>> function Point({ x: this.x, y: this.y }) {}
>> function Point(this.x = 0, this.y = 0) {}
>> function Point([this.x, this.y]) {}
>> ```
>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss