Хорошо, у меня есть очень специфический случай, для которого мне нужно использовать eval ().Прежде чем люди скажут мне, что я вообще не должен использовать eval (), позвольте мне сообщить, что я знаю о проблемах производительности eval, проблемах безопасности и всем этом джазе.Я использую это в очень узком случае.Проблема заключается в следующем:
Я ищу функцию, которая будет записывать переменную в любую область, в которую она передается, с учетом кода, подобного этому:
function mysteriousFunction(ctx) {
//do something mysterious in here to write
//"var myString = 'Oh, I'm afraid the deflector shield will be
//quite operational when your friends arrive.';"
}
mysteriousFunction(this);
alert(myString);
Я пробовал использовать глобальный eval(), чтобы сделать это, имитируя контекст выполнения с помощью замыканий, ключевого слова with и т. д., я не могу заставить его работать.Единственное, что я обнаружил, это работает:
function mysteriousFunction(ctx) {
ctx.eval("var myString = 'Our cruisers cant repel firepower of that magnitude!';");
}
mysteriousFunction(this);
alert(myString); //alerts 'Our cruisers cant repel firepower of that magnitude!'
Однако для вышеприведенного решения требуется функция object.eval (), которая устарела.Это работает, но это заставляет меня нервничать.Кто-нибудь хочет покончить с этим?Спасибо за ваше время!