evalの代用品

以下では、thisキーワードを使ってWindowオブジェクトを呼び出し、そのプロパティの中からsetTimeoutメソッドを特定して、望む文字列をeval、というアイデアについて記しました。(可能な限り既知の方法を使わない方向で…)

http://d.hatena.ne.jp/hoshikuzu/20090330#p3

昨日、上であげた方法とほぼ同様ですけれどthisキーワードを使わずに済むvariantを思いつきました。ただし、Firefoxでのみ動作確認しました。え?thisのかわりにwindowと記述すれば簡単だって?それは我慢する方向で。そもそもことの始まりはwindowのかわりにthisとしてもいいんだなぁという個人的なささやかな楽しみが起点ですので。

上で示したように改良前ではscript要素の中でのみ有効でした。これはthisキーワードを使っているためです。このたびの改良版ではその呪縛から解き放たれますので、onclickなどの属性の中で記述が可能となりました。なやんでいたのですよ、ひそかに。なやむ方向が間違っていますけれど、パズル的な趣味なので致し方なく。

その方法は…たとえば、0x1.__parent__などWindow Objectを示すものを使うんですね。

※あとは、文字列中に『(』や『)』を持つ異常なやりかたをなんとかして発見したいものです。これができると超面白いから…