Rhino JavaScript和动态范围var创建

时间:2010-02-04 23:52:10

标签: javascript dynamic rhino

我试图在Rhino JavaScript中的函数中定义动态变量(特别是Java 6中嵌入的函数),但我不想求助于eval,我不想通过它来引用它这个。基本上,我想获取一个对象,并将每个属性转换为函数范围内的var ...类似于:

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中执行此操作,那将是极好的(我认为结果会明显加快)。

1 个答案:

答案 0 :(得分:3)

那么,基本上你想要像JS的with那样的东西? *笑,鸭子和奔跑*

var abc = "value";
var context = {abc: 123, xyz: "def"};

function test(cx) {
    with (cx) {
        println(abc);
    }
}

test(context);
println(abc);

请注意,一些着名的JS从业者,如Doug Crockford,strongly deprecate the use of with