Мне нужно перенести программное обеспечение с помощью Rhino1.7R4 и его пакета org.mozilla.javascript, чтобы использовать пакет javax.script и его ScriptEngine ( Rhino в Java 6 и 7, Nashorn в Java 8).
Основная проблема заключается в том, чтобы складывать области видимости (привязки). Используя банку Rhino, я делаю:
Scriptable scope ...
Scriptable newScope = javascriptContext.initStandardObjects();
newScope.setParentScope(scope);
So
- если переменная определена без var, это глобальная переменная (корневая область)
- если переменная определена с помощью var, это локальная переменная (текущая область)
- если к переменной обращаются или изменяют, поиск движка в ее текущей области, а также в родительском и прародительском... и в глобальной области
Это стандартное поведение JS.
Как я могу сделать то же самое, что и setParentScope с API javax.script?