アクセサ関数

同じオブジェクトの同じ要素に何度もアクセスするような場合に便利かなと思って、作ってみました。

function accessor(object, key, initial) {
  if (arguments.length == 3)
    object[key] = initial;
  return function() {
    return (object[key] = arguments.length ? arguments[0] : object[key]);
  };
}

Synopsis:

var object = {
  key: 0
};
var key = accessor(object, "key");
key(1);
key();   // -> 1

object は無名の連想配列なんかでも OK ですね。

とりあえず、こんな感じで使っています:
accessor