Gilbert B Garza schrieb:
Forgive me if I'm missing the point, but isn't the entire purpose of using
classes to make all instances share the same function in memory via `this`
? If you want methods to always be bound, why not use closures instead?
```js
function Person (name) {
var person = this
person.greet = function () {
return person.name + " says hi!";
};
}
Yes, the point of prototypes is sharing. But maybe we don't want (cannot
use) that.
The point of the `class` syntax is just to enable a more declarative
definition of class methods - which should include some way to create
instance methods as well, simply because they're needed often enough.
And being able to declare methods that will get bound outside of the
constructor (even if that's a bit confusing) avoids much boilerplate
again. Just compare
```js
class Person extends … {
constructor(name) {
super(name);
this.greet = () => {
return this.name + " says hi!";
};
}
}
```
vs
```js
class Person extends … { // with default constructor
::greet() {
return this.name + " says hi!";
}
}
```
Regards,
Bergi
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss