obj.eval
obj.eval の挙動が気になるのでちょっと見てみた。仕様的には非推奨みたいなやつ (というかどこで言及されてるのが謎) だけど……
Fx1.5
obj = {}; obj.eval("a = 1"); obj.toSource()
//=> "({})"
obj = {}; obj.eval("var a = 1"); obj.toSource()
//=> "({a:1})"
obj = {}; obj.eval("this");
//=> [Window]Global オブジェクトは変化させない (変化させると思ってた)。this も変化しない。VariableObject が obj になるだけ?
Global が変わらないなら別にその obj で閉じた環境ができるわけじゃないだなぁ。