代码之家  ›  专栏  ›  技术社区  ›  aaaaaaaaaaaa

JavaScript:引用函数本地范围作为对象

  •  23
  • aaaaaaaaaaaa  · 技术社区  · 15 年前

    调用函数时,会为该调用建立一个本地作用域。有没有办法直接引用这个范围作为对象?就像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
    }
    

    或者,是否有人在自定义变量之上有一个完整的本地范围列表?

    注意:对于任何动态加载JavaScript的人, setTimeout(code,1)

    6 回复  |  直到 15 年前
        1
  •  15
  •   T.J. Crowder    11 年前

    函数执行上下文的变量对象 多变的环境 (这就是所谓的[现在;因此删除线];详细信息 §10.3 of the specification arguments (这确实非常有限)。

    Closures are not complicated .

        2
  •  9
  •   Dom Hastings    11 年前

    我知道这已经很晚了,你可能已经不太感兴趣了,但我也对这一点的可行性感兴趣,你应该可以用以下方法来解决这个问题:

    (function(global) {
        var testVar = 1;
    
        global.scope = function(s) {
            return eval(s);
        }
    })(this);
    

    然后运行:

    scope('testVar'); // 1
    

    编辑 :在重新阅读了问题之后,我假设您希望访问它而不必在作用域本身中指定函数,因此这可能不适用。不管怎样,我还是把这个留在这里。

        3
  •  1
  •   SLaks    15 年前

    某些版本的Netscape在 arguments

        4
  •  0
  •   Ivo Sabev    15 年前

    像这样的怎么样?

    <script type="text/javascript">
        var test =  {
            bar : 1,
            foo : function () {
                alert(this.bar);
            }
        }
    
        test.foo();
    </script>
    
        5
  •  -4
  •   Matt Ball    15 年前

    这是你的范围 .