javascript - Rhino JavaScript 和动态作用域变量创建

标签 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”,那就很重要了。 (这是一个动态生成的函数,我想用不同的上下文对象一遍又一遍地调用它,并且对每个变量使用“this”将非常有害)。

我还想避免必须获取新的引擎上下文或类似的东西...如果我可以直接在 JavaScript 中执行此操作,那就太好了(我认为结果会明显更快)。

最佳答案

所以,基本上你想要一些像 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 .

关于javascript - Rhino JavaScript 和动态作用域变量创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204121/

相关文章:

javascript - 如何生成具有不同颜色行的 React 表?

java - 切换主题时如何考虑变化?

android - 如何以编程方式将 View 添加到 gridview,android?

java - Rhino:如何将字符串从 Java 返回到 Javascript?

javascript 替换函数来替换子字符串

javascript - 在可滚动表中隐藏垂直滚动

algorithm - 贪婪与动态

java - 如何确定与 JRE6 一起分发的 rhino 版本?

java - 在Rhino中获取脚本的路径

javascript - 如何防止其元素内的链接默认?