[JavaScript] (mozilla)

 var code = uneval(this["function_name"])
 code = code.replace("...", "...") // codeを編集
 this["function_name"] = eval("(" + code + ")")

uneval/evalを使って、macroの様な事が出来る。
これの応用でJavaScriptで継続を実装なんてデモがあった。

LISPなら、S式=構文木=codeだから、リスト操作で済むのだけど
javascript/evalの場合は、
コードを再度パースするか、正規表現&置換でコードを編集しないといけない。
tokenくらい簡単に得られたらなぁ、、

関数オブジェクトは上記の方法で得られるので、
AOPのPointCutみたいなのは匿名関数と組み合わせで出来る。
(先日のProthonでの例みたいに)

 this["foo"] = function () { return afterFunc(this["foo"](arguments)) }