我正在使用javascript创建一个firefox组件 但我总是对当前javascript函数的全局范围感到困惑,这导致了以下问题?
我理解一些关于js函数全局范围的基本概念,但是我想知道,函数的全局范围何时确定?创建(定义)函数的时间,或调用函数的时间?
有没有办法显示(打印一些信息)javascript函数的当前全局范围?
following question is firefox component specific
对于firefox组件,每个组件本身都有一个全局范围吗? (这意味着组件的每个功能都将在全局范围内运行),或者每个组件具有相同的全局范围? 如果相同,那是什么?
例如,在这种情况下
sorry for this boring example, i just make it as clear as possible.
我通过Components.utils.Sandbox(<scope1>)
制作了一个沙盒。我在ff组件中定义了一些函数(我称之为<scope2>
),并通过以下方式将变量注入沙箱:sandbox.external = this;
(“this”只是一个组件本身,在scope2中)
完成这些步骤后,我按Components.utils.evalInSandbox( <code> , sandbox);
在沙箱中运行一些代码,而<code>
包含function sandboxFoo()
调用external.foo()
1)。 sandboxFoo
运行时的全局范围是什么?我认为应该是
2)。 external.foo
调用时sandboxFoo
的全局范围是什么?是<scope1>
还是<scope2>
?有文件吗?
答案 0 :(得分:1)
this
点的引用。假设this
是组件的全局范围(可能不会像编写的那样),并且您的意思是从沙箱中调用external.foo
,全局范围将是您的组件全局范围。答案 1 :(得分:0)