Javascriptのevalをオブジェクト指向に

Category:
Coding
Date:
2007-02-07T15:19:00+09:00

Javascriptのevalをオブジェクト指向にする。

Javascriptでeval使うときってたいてい文字列を評価する場合が多いので、 Stringオブジェクトのメソッドにしてみた。

String.prototype.eval = function () {
    return eval( '' + this );
}

コードの扱いはパブリック・ドメインで。

とりあえず、Windowsの

  1. Firefox 2.0
  2. Opera 9.2
  3. 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さん

Trackbacks

Trackback URI

Comments

最新のコメント20件を表示しています

  1. Number:
    1
    Name:
    nanto_vi
    Date:
    2007/02/07 (Wed) 23:19:08
    ID:
    U7J63X5+
    evalは引数が文字列値でないときはそれをそのまま返すのでそのせいでしょう。(メソッド呼び出しの際に文字列値が文字列オブジェクトに変換される。)
    http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-1_Global_Object.html#section-15.1.2.1
  2. Number:
    2
    Name:
    にゃるら、
    Date:
    2007/02/08 (Thu) 10:32:01
    ID:
    dDeEPQ8K
    仕様書確認しました。

    情報ありがとうございます。
Post a comment

コメントを投稿する前にコメント/トラックバックについてをお読みください。

About Me

name
Naoki Okamura
nick
nyarla
contact
Ads
Category
Log
Banners
Powered by
blosxom (nyarla mod)