functionの省略表記のように、get、setも省略表記がつかえる。
({ get x()1234 }).x; // 1234
クラス共有の変数を隠蔽したい場合、this._xみたいにしなくても
window.__defineGetter__( 'foo', function() { var x = Date.now(); function foo() {} foo.prototype = { x: function() { return x; }, y: function() { x++; } } return foo; } );
みたいにできる。
一度作ったゲッター、セッターの関数にアクセスしたい場合、
window.__lookupGetter__('foo');
みたいにすればいい。
delete foo;
とすると、ゲッター、セッターの両方が削除されるので、
片方のみを削除したい場合は、__lookupGetter__や__lookupSetter__で保存しておいた関数を、もう一度__defineGetter__、__defineSetter__で設定する。