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」と表示されます。