我想在Rhino JavaScript中的函數中定義一個動態變量(特別是嵌入在Java 6中的),但我不想求助於eval,而且我也不想想要通過這個來引用它。基本上,我想利用一個對象,並把每個屬性爲函數的範圍內的無功...類似:Rhino JavaScript和動態範圍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中直接做到這一點(我認爲結果會更快),那將是非常棒的。
這是真的動態範圍,因爲標題暗示,或其他完全?對我來說,動態範圍意味着引用調用者的環境綁定。它是動態的,因爲受限制取決於程序執行流程。爲在靜態範圍中已經可見的名稱制作簡寫名稱似乎是另一回事。 – Anonymoose 2011-12-07 05:55:25