Je suis en train de définir une variable dynamique au sein d'une fonction JavaScript Rhino (en particulier ce qui est intégré dans Java 6), mais je ne veux pas recourir à eval, et je ne vouloir avoir à le référencer via cela. Au fond, je veux prendre un objet, et transformer chaque propriété dans un var dans le cadre d'une fonction ... quelque chose comme:JavaScript Rhino et la portée dynamique var création
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
Croyez-le ou non, il est significatif si je dois utiliser « cette " (C'est une fonction générée dynamiquement que je veux invoquer encore et encore avec différents objets de contexte et en utilisant "ceci" pour chaque variable serait très nuisible).
Je veux aussi éviter d'avoir à saisir un nouveau contexte de moteur ou quelque chose comme ça ... ce serait superbe si je peux le faire directement en JavaScript (je pense que le résultat serait beaucoup plus rapide).
Est-ce que cette portée est vraiment dynamique comme le suggère le titre ou quelque chose d'entièrement différent? Pour moi, la portée dynamique signifie faire référence aux liaisons d'environnement de l'appelant. C'est dynamique parce que ce qui est lié dépend du flux d'exécution du programme. Faire des noms raccourcis pour les noms qui sont déjà visibles dans une portée statique semble être une chose différente. – Anonymoose