Javascript 获取当前函数()作用域的所有变量
我有个问题。我想获取当前函数scrope。我有这个示例代码,我正在工作的好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"); } } }
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()
。我只是为了这个问题把它简化如下: