素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter すかいぷ:javascripter_ , javascripter あっと tsukkun.net twitterにどうぞ。

getとsetについてのメモ

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__で設定する。