From the harmony classes example copied below for reference.
The set health(value) {...} assigns a new value to this.health. But health is a
private property, so the assignment is setting a public property. Shouldn't the
assignment be private(this).health = value?
class Monster {
// The contextual keyword "constructor" followed by an argument
// list and a body defines the body of the class’s constructor
// function. public and private declarations in the constructor
// declare and initialize per-instance properties. Assignments
// such as this.foo = bar; set public properties.
constructor(name, health) {
public name = name;
private health = health;
}
// An identifier followed by an argument list and body defines a
// method. A “method” here is simply a function property on some
// object.
attack(target) {
log('The monster attacks ' + target);
}
// The contextual keyword "get" followed by an identifier and
// a curly body defines a getter in the same way that "get"
// defines one in an object literal.
get isAlive() {
return private(this).health > 0;
}
// Likewise, "set" can be used to define setters.
set health(value) {
if (value < 0) {
throw new Error('Health must be non-negative.')
}
this.health = value
}
// An identifier optionally followed by "=" and an expression
// declares a prototype property and initializes it to the value
// of that expression. "public" as a member modifier is allowed.
numAttacks = 0;
// The keyword "const" followed by an identifier and an
// initializer declares a constant prototype property.
const attackMessage = 'The monster hits you!';
}
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss