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でこれを直接実行できれば、すばらしい結果が得られると思います(結果は大幅に高速になると思います)。