ryoakg
6/14/2016 - 5:58 AM

getter-setter.js

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 }