[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)) }