如果你有一个网页并且它有一堆对象,那么有没有办法选择特定类型的所有对象?
例如,如果你定义了A类,然后你创建了3个A实例,有没有办法找到A类的所有实例?
class A{
}
var a = new A()
var b = new A()
var c = new A()
有没有办法找到对象a
,b
,c
?
答案 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)
如果您可以遍历您拥有的对象集,则可以使用instanceof
MDN。但是,如果没有在实例化对象时收集对象,则只需查看全局命名空间就不太可能收集对象。主要是因为名称空间繁忙,以及在单独的作用域内创建的任何这些对象都无法通过该途径访问。
实现此目的的最佳方法是保存将来要查找的对象,然后当您想要找到它们时,使用instanceof
运算符迭代该集合。