Я пытаюсь определить динамическую переменную внутри функции в Rhino JavaScript (в частности, что встроено в Java 6), но я не хочу прибегать к eval и не хочу ссылаться на нее через этот. По сути, я хочу взять объект и превратить каждое свойство в переменную в рамках функции ... что-то вроде:
var abc = "value";
var context = { abc: 123, xyz: "def" };
function test(cx) {
for (var p in cx) {
this_scope[p] = cx[p];
}
println(abc);
// DON'T WANT TO HAVE TO DO THIS:
// pritnln(this.abc);
}
test(context); // prints: 123
println(abc); // prints: value
Верьте или нет, важно, если мне придется использовать «это». (это динамически генерируемая функция, которую я хочу вызывать снова и снова с различными объектами контекста, и использование «this» для каждой переменной будет очень вредным).
Я также хочу избежать необходимости захватывать новый контекст движка или что-то в этом роде ... было бы замечательно, если бы я мог сделать это прямо в JavaScript (я думаю, что результат был бы значительно быстрее).