javascript 既存の関数の書き換え

  • evalでメソッドや関数を書き換える(フック)
eval(
  "method = " +
  (method+'')
  .replace("function (){","function (){console.log(arguments);")
)

この場合、元の関数が関数のスコープ外の変数を参照していると、関数を文字列に変換した時点で、関数が正常に動かなくなる。

なので素直に

if(!_method) {
  _method = method;
  method= function(){
    console.log('test');
    var result = _method(this, arguments);
    console.log(result);
    return result;
  }
}

としてあげた方がよさそう。