Javascriptのevalをオブジェクト指向にする。
Javascriptでeval使うときってたいてい文字列を評価する場合が多いので、
Stringオブジェクトのメソッドにしてみた。
String.prototype.eval = function () {
return eval( '' + this );
}
コードの扱いはパブリック・ドメインで。
とりあえず、Windowsの
- Firefox 2.0
- Opera 9.2
- Internet Explorer 6
で動くことを確認。
evalのところでthisと空の文字列と結合しているのがポイント。
というか結合せずにeval( this )と書くと何故か動きません。何でなのかは不明。
これで、
'alert("hoge")'.eval()
とか書ける。
prototype拡張って楽しい。
追記:2007-02-08T10:30:00+09:00
コメント欄でnanto_viさんに教えてもらったんですが、evalは引数が文字列でない場合、
引数をそのまま返すので、そのせいでeval(this)が動かないようです。
詳しくはECMAScriptの仕様書の日本語訳を参照。
情報ありがとうございます。 > nanto_viさん
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-1_Global_Object.html#section-15.1.2.1
情報ありがとうございます。