Указать область действия для eval() в JavaScript?

есть ли способ выполнить eval() в определенной области ( но НЕ глобально)?

например, следующий код не работает (a не определено во втором операторе), потому что они находятся в разных областях:

eval(var a = 1); 
eval(alert(a));

Если возможно, я хотел бы создать область действия на лету. например (синтаксис определенно неверный, но просто для иллюстрации идеи)

var scope1;
var scope2;
with scope1{
    eval(var a = 1); eval(alert(a));  // this will alert 1
}
with scope2{
    eval(var a = 1); eval(a++); eval(alert(a));  // this will alert 2
}
with scope1{
    eval(a += 2); eval(alert(a)); // this will alert 3 because a is already defined in scope1
}

Любая идея о том, как добиться чего-то подобного? Спасибо!

21
задан hiukim 20 March 2012 в 04:22
поделиться