有没有办法让javascript检测所有已分配的变量?例如,如果一个js文件创建了一堆变量(全局范围),后续文件是否可以获取所有变量而不知道它们的名称和可能存在的变量?
提前致谢:)
编辑,问题第2部分:
如何获取这些变量的值?以下是我的尝试:
根据评论建议,这就是我最终的结果:
for (var name in this) {
variables[name] = name;
variables[name]=this[name]
}
答案 0 :(得分:25)
Flanagan的“JavaScript - The Definitive Guide”在第653页提供了以下内容:
var variables = ""
for (var name in this)
variables += name + "\n";
答案 1 :(得分:2)
对于Firefox,您可以看到DOM选项卡 - 虽然不是您问题的答案,但很容易。
Kinopiko答案中提供的for in
循环将起作用,但不适用于IE。以下链接的文章中解释了更多内容。
对于IE,请使用RuntimeObject
。
if(this.RuntimeObject){
void function() {
var ro = RuntimeObject(),
results = [],
prop;
for(prop in ro) {
results.push(prop);
}
alert("leaked:\n" + results.join("\n"));
}();
}
另见:
答案 2 :(得分:1)
有this
变量。这是一个对象或数组,你可以简单地把:
for(i in this) { //do something }
不幸的是,它将返回this
对象下的所有。
答案 3 :(得分:0)
这会将所有变量输出到控制台,而无需您自己读取变量。
var variables = ""
for (var name in this)
variables += name + "\n";
console.log(variables)
/*
This could work too... but it's such a big unecessary code for something you could do in one line
var split = variables.split("\n");
for (var i in split)
console.log(split[i])
*/