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; } }
としてあげた方がよさそう。