var o = {
x:10,
get x(){ return this.x + 1; },
set x(v){ this.x *= v; }
};
o.x; //=> RangeError: Maximum call stack size exceeded
o.x = 3; //=> RangeError: Maximum call stack size exceeded
var o = {
_x:10,
get x(){ return this._x + 1; },
set x(v){ this._x *= v; }
};
o.x; //=> 11
o._x; //=> 10
o.x = 3; //=> 3
o.x; //=> 31
o._x; //=> 30
var o = (function(){
var x = 10;
return {
get x(){ return x + 1; },
set x(v){ x *= v; }
};})();
o.x; //=> 11
o.x = 3; //=> 3
o.x; //=> 31
function C(x){ this._x = x; }
C.prototype = {
get x() { return this._x + 1; }
};
var o = new C(10);
o.x; //=> 11
o; //=> { _x: 10 }