带范围链的JS_EvaluateScript

时间:2013-06-05 07:27:34

标签: c++ c spidermonkey jsapi

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

JS_EvaluateScript (cx , scope_obj, ... ) 

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

当我开始

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

没关系...

然后我运行

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

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

但结果返回“hello world”

请告知我是否遗漏了什么,先生

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

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

1 个答案:

答案 0 :(得分:0)

当我找到带有“var”snytax的脚本时,JS_EvaluateScript函数将仅使用全局范围执行

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

它将变量声明为全局范围/或者像使用JSPROP_PERMANENT标志运行定义全局范围的属性(因此无法运行脚本“delete scope1var”)

JS_DefineProperty(CX,globalScop,...,JSPROP_PERMANENT)