Использование eval() с пользовательским глобальным

Есть ли способ указать, какой объект использовать для global при вызове eval()?

(Я не спрашиваю, как сделать global eval().)

Это не работает, но это иллюстрирует то, что я хотел бы:

var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12

Дело в том, что на реальные глобальные привязки не влияет неявное объявление переменных (т.е. без ключевых слов var) в коде eval().

Что касается eval.call(pseudoGlobal, "x=12")или eval.apply(pseudoGlobal, ["x=12"]), некоторые интерпретаторы этого не допустят. .

6
задан gawi 15 June 2012 в 12:34
поделиться