javascriptでAspect2

乗っ取りの実行部に約束事が残るのは嫌。なので

var wrap2 = function(obj,id,before,after){
  obj[id] = wrap(obj[id],before,after);
}
var obj = { _x:"X", getX:function(){return this._x;} };
// 乗っ取りの実行
wrap2(obj,
      "getX",
      function(){alert("DO BEFORE");},
      function(){alert("DO AFTER");});

というwrap2()を使う方がスマートだと思う。