0

我在蜘蛛猴网站上看到了示例代码,JS_EvaluateScript 总是引用全局范围对象,如果我想创建父级为全局范围的范围对象,这会工作吗?

JS_EvaluateScript (cx , scope_obj, ... ) 

scope_1 ----has -- 作为父对象的全局对象
scope_2 ----has -- 作为父对象的全局对象

当我跑

  JS_EvaluateScript(cx , scope_1 , "var scope1var = 'hello'"....)

没关系...

然后我跑

  JS_EvaluateScript(cx , scope_2 , "scope1var +' world'"....)

它应该有错误,因为 scope_2 没有 scope_1 的变量。

但结果返回为“hello world”

先生,如有遗漏请指教

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

或者您能否告诉我在代码进入新范围时如何实现?谢谢你。

4

1 回答 1

0

当我发现带有 "var" snytax 的脚本时,JS_EvaluateScript 函数将仅在全局范围内执行

JS_EvaluateScript(cx, scope_1, "var scope1var = 'hello'"....)

它将变量声明为全局范围/或者就像使用 JSPROP_PERMANENT 标志运行全局范围的定义属性(所以你不能运行脚本“delete scope1var”)

JS_DefineProperty(cx,globalScop,...,JSPROP_PERMANENT)

于 2013-06-10T03:31:37.307 回答