当我调用一个函数时,会为该调用建立一个本地作用域。有什么方法可以直接将该范围作为对象引用吗?就像window是全局范围对象的引用一样。
Example:
function test(foo){
var bar=1
//Now, can I access the object containing foo, bar, arguments and anything
//else within the local scope like this:
magicIdentifier.bar
}
或者,是否有人拥有自定义变量之上的本地范围内内容的完整列表?
背景:我正在尝试找到一种从函数调用内完全转移到全局作用域的方法,with语句是一个笑话,调用效果更好一点,但它仍然会破坏函数作用域中声明的任何内容,但不会破坏函数作用域中声明的任何内容。全局范围,因此我会在全局范围内声明这少数情况,但这需要我知道它们是什么。 IE 函数 execScript 进行了彻底的转变,但这仅解决了 IE 的问题。
注意:对于任何动态加载 JavaScript 的人来说,setTimeout(code,1)
是一个实现全局范围的简单有效的 hack,但它不会立即执行。
No, there's no way to reference the variable object of the execution context of a function binding object of the variable environment of the execution context (that's what that thing is called [now; hence the strikethrough]; details in §10.3 of the specification http://www.ecma-international.org/ecma-262/5.1/#sec-10.3). You can only access the limited view to it you get with arguments
(which is very limited indeed).
通常,当我想这样做时,我只是将我想要的所有内容放在一个对象上,然后使用它(例如,将其传递到函数中)。当然,在上下文中创建的任何函数都可以访问它们创建范围内的所有内容,因为它们“封闭”了上下文;更多的:闭包并不复杂 http://blog.niftysnippets.org/2008/02/closures-are-not-complicated.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)