我遇到了问题。我想得到当前的功能scrope。我有这个示例代码,我工作正常。
function nittle(){
var Pen = new Dot(); // Generated dynamical through eval()
.....
for(key in window) {
if( window[key] instanceof Dot ){
alert("found it");
}
}
}
但它似乎不能在功能范围内工作。在它之外工作。有工作吗?
感谢。
答案 0 :(得分:1)
我不知道有任何方法可以通过编程方式确定在函数内声明了哪些变量,除非使用nittle.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
创建的 - 您仍然可以使用对象属性构思来执行此操作:
{{1}}