Я видел пример кода на сайте обезьяны-паука, JS_EvaluateScript всегда ссылается на объект глобальной области видимости,
Если я хотел бы создать объект области видимости, родитель которого является глобальной областью действия, это будет работать?
JS_EvaluateScript (cx , scope_obj, ... )
scope_1 —- имеет — глобальный объект в качестве родителя
scope_2 —- имеет — глобальный объект как родитель
Когда я бегу
JS_EvaluateScript(cx , scope_1 , "var scope1var = 'hello'"....)
все в порядке…
И тогда я бегу
JS_EvaluateScript(cx , scope_2 , "scope1var +' world'"....)
он должен иметь ошибку, потому что scope_2 не имеет переменной scope_1.
но результат возвращается как «привет мир»
Посоветуйте, пожалуйста, если я что-то упустил, сэр
============================
Или не могли бы вы сказать мне, как реализовать, когда код входит в новую область?
Спасибо.
Как я обнаружил сценарий с «var» snytax, функция JS_EvaluateScript будет выполняться только с глобальной областью действия.
JS_EvaluateScript (cx, scope_1, «var scope1var = ‘hello'» ….)
он объявляет переменную как глобальную область видимости / или просто запускает определение свойства глобальной области видимости с флагом JSPROP_PERMANENT (поэтому вы не можете запустить скрипт «delete scope1var»)
JS_DefineProperty (сх, globalScop, …, JSPROP_PERMANENT)
Других решений пока нет …