Javascriptで、自分自身を書き換える関数ができた。
自己書き換えみたいな感じのプログラムです。
これはいろいろな応用ができそうなので、ここに書いておきます。
function selfmodify() { var str = arguments.callee.name + " = function() {\ return \"bbbbb\";\ }"; eval(str); return "aaaaa"; } alert(selfmodify()); alert(selfmodify());
一応仕組みを書いておきます。
まず、
var str = arguments.callee.name + " = function() {\ return \"bbbbb\";\ }";
この部分で、arguments.calee.nameを使って自分自身の関数名を取得して、
文字列として、自分自身に代入するコードを作っています。
次に、
eval(str);
この部分で、作ったコードを実行します。
alert(selfmodify()); alert(selfmodify());
このように関数を呼び出すと、最初のアラートでは「aaaaa」と表示されますが、二回目のアラートでは「bbbbb」と表示されます。