获取Javascript文件中所有对象的数组
我正在玩一些Javascript代码,这时我偶然发现了一个问题:有没有办法找到任何Javascript文件中获取Javascript文件中所有对象的数组,javascript,object,Javascript,Object,我正在玩一些Javascript代码,这时我偶然发现了一个问题:有没有办法找到任何Javascript文件中对象的数量,并将它们打印出来?我在互联网上没有找到任何对此的答案,我怀疑这是可能的,但如果有人有想法,我很想看看 代码示例(如果没有意义): var str = "Hello World!"; var num = 3.14; var obj = {}; function printOutObjects() { var objs = []; // Find objects i
对象的数量,并将它们打印出来?
我在互联网上没有找到任何对此的答案,我怀疑这是可能的,但如果有人有想法,我很想看看
代码示例(如果没有意义):
var str = "Hello World!";
var num = 3.14;
var obj = {};
function printOutObjects() {
var objs = [];
// Find objects in script...
console.log(objs);
}
好的,最终一切都是窗口
对象的一部分,因此,作为一个理论练习,您可以使用以下内容,但它会让您获得比预期稍多的收益(并且可能会使您的计算机崩溃):
但是我不知道你为什么要这样做,如果你想查看页面中的内容,你可以在控制台中登录窗口,然后向下钻取它。那里应该记录什么<代码>str,num,obj
<代码>obj
obj,objs
?是否也希望在闭包中包含对象?DOM元素呢?是否要包括作为操作副作用创建的对象,如原型?内部对象或模拟的私有属性也应该包括在内吗?基本上JS中的所有东西都是一个对象,比如对象、数组、日期对象、函数等等。这些也应该包括在内吗?TL;DR:定义你所说的“对象”是什么意思,因为在JS中,几乎所有的东西都是一个对象。如果可能的话,它们都是@您是否计划在定义新对象时使用var?每个对象都会使用new关键字定义吗?我并不是说这是不可能的。在我看来,静态检查的最佳方法是创建自己的解析器,并为创建对象的点解析代码。但是,您正在静态地解析它。您不知道当代码在运行时运行时会发生什么。此外,在运行时劫持代码(反防御编程的东西)也是非常有黑客性的,并且高度依赖于被劫持的代码。处理安全异常和其他可能出现的问题!!建议此操作是异步的。使用网络工作者或使用计时器延迟他们。
var str = "Hello World!";
var num = 3.14;
var obj = {};
function printOutObjects() {
var objs = [];
objs.push(window);
recurseObj(window, objs);
console.log(objs);
}
function recurseObj(o, objs) {
if(typeof(o) == "undefined" || o == null || typeof(o) == "string" || typeof(o) == "number") {
return;
}
for(var c in o) {
// handle security exceptions and whatever else may come up
try {
// stop computer crashing
if(objs.length > 300) {
return;
}
else {
var obj = o[c];
// Ensure its not already in the results
if(objs.indexOf(obj) == -1) {
objs.push(obj);
recurseObj(obj, objs);
}
}
} catch(e){}
}
}
printOutObjects();