class Square {
constructor() {
this.side = 0;
}
get area() {
return this.side * this.side;
}
set area(value) {
this.side = Math.sqrt(value);
}
}
let square = new Square();
square.side = 2;
//square.area is 4
console.log("square.area is",
square.area);
square.area = 9;
//square.side is 3
console.log("square.side is",
square.side);
// *** up to ES6 ***
function OldSquare() {
this.side = 0;
}
Object.defineProperty(OldSquare.prototype, "area", {
get: function () {
return this.side * this.side;
},
set: function (value) {
this.side = Math.sqrt(value);
}
});
var oldSquare = new OldSquare();
oldSquare.side = 2;
//oldSquare.area is 4
oldSquare.area = 16;
//oldSquare.side is 4
console.log(oldSquare.side + ", " + oldSquare.area);