JS_EvaluateScript с цепочкой областей действия

Я видел пример кода на сайте обезьяны-паука, 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.

но результат возвращается как «привет мир»

Посоветуйте, пожалуйста, если я что-то упустил, сэр

============================

Или не могли бы вы сказать мне, как реализовать, когда код входит в новую область?
Спасибо.

0

Решение

Как я обнаружил сценарий с «var» snytax, функция JS_EvaluateScript будет выполняться только с глобальной областью действия.

JS_EvaluateScript (cx, scope_1, «var scope1var = ‘hello'» ….)

он объявляет переменную как глобальную область видимости / или просто запускает определение свойства глобальной области видимости с флагом JSPROP_PERMANENT (поэтому вы не можете запустить скрипт «delete scope1var»)

JS_DefineProperty (сх, globalScop, …, JSPROP_PERMANENT)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]