In the harmony:classes proposal the following example is provided:
class Monster {
// "static" places the property on the constructor.
static allMonsters = [];
// "public" declares on the prototype.
public numAttacks = 0;
// "private" places it on the private record of the new instance.
private health;
}
According to the grammar it doesn't appear that static and private are allowed
together. That is
static private allMonsters = [];
would be an error. However I think this is a common use case, for example
Monster may wish to
implement a constructor based dependency injection pattern as:
class Monster {
constructor(name, health) {
public name = name;
private health = health;
Monster.allMonsters.push(this);
}
static allMonsters = [];
}
class YourMammaMonster extends Monster {
constructor(name,posse) {
super(name, 10);
private posse = posse;
}
set health(value) {
private(this).health = value*0.5;
}
}
In this scenario, Monster would want strong encapsulation of allMonsters. Have
the authors considered this use case? Are their alternative patterns to achieve
a similar result?
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss