有没有办法按数据类型查找所有元素

时间:2018-04-12 21:33:33

标签: javascript

如果你有一个网页并且它有一堆对象,那么有没有办法选择特定类型的所有对象?

例如,如果你定义了A类,然后你创建了3个A实例,有没有办法找到A类的所有实例?

class A{

}

var a = new A()
var b = new A()
var c = new A()

有没有办法找到对象abc

2 个答案:

答案 0 :(得分:1)

您可以遍历window中的所有对象并检查其构造函数名称:

class A {

}

var a = new A();
let b = new A();
const c = new A();
var d = new A();

for(var key in window){
  if(window[key] && window[key].constructor && window[key].constructor.name == "A"){
    console.log(key);
  }   
}

/*
    Output:
 a
 d
*/

虽然这只会在全局范围内找到使用var定义的元素

更好的选择(如果您是页面的创建者)将在您创建列表或对象时添加要跟踪的所有元素。

答案 1 :(得分:0)

如果您可以遍历您拥有的对象集,则可以使用instanceofMDN。但是,如果没有在实例化对象时收集对象,则只需查看全局命名空间就不太可能收集对象。主要是因为名称空间繁忙,以及在单独的作用域内创建的任何这些对象都无法通过该途径访问。

实现此目的的最佳方法是保存将来要查找的对象,然后当您想要找到它们时,使用instanceof运算符迭代该集合。