Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Javascript文件中所有对象的数组_Javascript_Object - Fatal编程技术网

获取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

我正在玩一些Javascript代码,这时我偶然发现了一个问题:有没有办法找到任何Javascript文件中
对象的数量,并将它们打印出来?
我在互联网上没有找到任何对此的答案,我怀疑这是可能的,但如果有人有想法,我很想看看

代码示例(如果没有意义):

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();