2

Rhino1.7R4とそのorg.mozilla.javascriptパッケージを使用してソフトウェアを移植し、 javax.scriptパッケージとその ScriptEngine ( Java 6 & 7 のRhino 、Java 8 のNashorn ) を使用する必要があります。

主な問題は、スコープ (バインディング) をスタックすることです。Rhino jar を使用して、次のことを行います。

Scriptable scope ...
Scriptable newScope = javascriptContext.initStandardObjects();
newScope.setParentScope(scope);

そう

  • 変数が var なしで定義されている場合、それはグローバル変数 (ルート スコープ) です。
  • 変数が var で定義されている場合、それはローカル変数です (現在のスコープ)
  • 変数がアクセスまたは変更された場合、その現在のスコープ、親、祖父母、およびグローバル スコープでのエンジン ルックアップ

これは JS 標準の動作です。

javax.script API を使用してsetParentScopeと同じことを行うにはどうすればよいですか?

4

1 に答える 1