当我调用一个函数时,为该调用建立了一个本地范围.有没有办法直接将该范围作为对象引用?就像window是全局范围对象的引用一样.
例:
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
}
Run Code Online (Sandbox Code Playgroud)
或者,是否有人在自定义变量之上有一个完整的本地范围列表?
背景:我试图从一个函数调用中完全转移到全局范围的方式,with语句是一个笑话,调用工作得更好一点,但它仍然在函数作用域中声明但在全球范围,因此我会在全球范围内宣布这几个案例,但这需要我知道它们是什么.IE函数execScript完全转换,但这只能解决IE的问题.
注意:对于动态加载JavaScript的任何人来说setTimeout(code,1),实现全局范围是一个简单有效的方法,但它不会立即执行.
我知道这已经很晚了,你可能不再对它有点兴趣了,但我也对它的可行性感兴趣,你应该可以使用以下方法进行某种工作:
(function(global) {
var testVar = 1;
global.scope = function(s) {
return eval(s);
}
})(this);
Run Code Online (Sandbox Code Playgroud)
然后运行:
scope('testVar'); // 1
Run Code Online (Sandbox Code Playgroud)
从闭包内返回变量.不是特别好,但理论上可以将它包装在一个对象中,如果需要,可能使用一些验证和getter和setter?
编辑:重新阅读问题之后,我假设你想要访问它而不必在范围本身中指定一个函数,所以这可能不适用.无论如何,我会留在这里.
| 归档时间: |
|
| 查看次数: |
9940 次 |
| 最近记录: |