Javascript 获取当前函数()作用域的所有变量

Javascript 获取当前函数()作用域的所有变量,javascript,jquery,function,prototype,instance,Javascript,Jquery,Function,Prototype,Instance,我有个问题。我想获取当前函数scrope。我有这个示例代码,我正在工作的好 function nittle(){ var Pen = new Dot(); // Generated dynamical through eval() ..... for(key in window) { if( window[key] instanceof Dot ){ alert("found it"); } } }

我有个问题。我想获取当前函数scrope。我有这个示例代码,我正在工作的好

function nittle(){

    var Pen = new Dot(); // Generated dynamical through eval()
    .....

    for(key in window) {
        if( window[key] instanceof Dot ){
            alert("found it");
        }
    }

}
但它似乎不在功能范围内工作。在它之外工作。附近有工作吗


谢谢。

我不知道有什么方法可以通过编程确定函数中声明了哪些变量,除了可能使用
nitle.toString()
然后尝试自己解析它以查找所有变量。也许这对你有用?更新:但是如果变量是通过
eval()
创建的,那么它将不起作用,您只会在函数的字符串表示中看到
eval()
语句

附近有工作吗

您可以在函数中声明单个对象,并将所有变量更改为该对象的属性:

function nittle() {
  var nittleVars = {
     var1 : "something",
     Pen : new Dot(),
     etc : "whatever"
  };

  for (var key in nittleVars){
    if( nittleVars[key] instanceof Dot ){
        alert("found it");
    }
  }
}
您的更新表明变量是使用
eval()
创建的-您仍然可以使用对象属性的想法:

  eval("nittleVars.newVar = new Dot()");  // inside the function

你为什么要这么做?当然
nitle()
函数可以直接引用自己的变量。函数作用域变量不会像全局变量那样由其他代码添加。@未定义我不能这样做。是的,我知道我为什么要问这个问题。不,不可能。@Jessica-怎么会这样?我的意思是为什么不能在
nitle()
中编写代码来访问它的局部变量。有什么例子吗?@techfoobar因为
eval()
。我只是为了这个问题把它简化如下: