Если у вас есть веб-страница и на ней много объектов, есть ли способ выбрать все объекты определенного типа?
Например, если вы определяете класс A, а затем создаете 3 экземпляра A, есть ли способ найти все экземпляры класса A?
class A{
}
var a = new A()
var b = new A()
var c = new A()
Есть ли способ найти объекты a, b, c?
Почему бы просто не сохранить их в списке? Какой у вас актуальная проблема?
Я пытаюсь получить структуры данных на странице, которую я не писал.
Если вы добавляете каждый созданный вами объект в какую-либо коллекцию при ее создании, а затем ищите в этой коллекции instanceof Classnamestackoverflow.com/questions/1249531/…
нет, вам нужно сохранить экземпляры в Array () или Set (), чтобы сохранить все ссылки
@ SamFisher83 И какой инструмент вы используете для этого? Отладчик?
@ SamFisher83 Теперь у вас есть контроль над кодом (т.е. поддерживаете ли вы страницу, которую не создавали, или вы просто пытаетесь реконструировать полностью чужую страницу)?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы можете перебирать набор имеющихся у вас объектов, вы можете использовать instanceofMDN. Однако без сбора объектов по мере их создания маловероятно, что вы сможете собрать набор, просто взглянув на глобальное пространство имен. В основном потому, что пространство имен занято, а также тот факт, что любой из этих объектов, которые были созданы внутри отдельных областей, не будет доступен через этот канал.
Наилучший способ добиться этого - сохранить объекты, которые вы хотели бы найти в будущем, а затем, когда вы захотите их найти, повторите набор с помощью оператора instanceof.
Вы можете перебрать все объекты в 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.info(key);
}
}
/*
Output:
a
d
*/
Хотя при этом будут найдены только элементы определяется с помощью var в глобальной области видимости.
Лучшим вариантом (если бы вы были создателем страницы) было бы добавить все элементы, которые вы хотите отслеживать, в список или объект по мере их создания.
Обратите внимание, что это не ограничивается только глобальной областью, но и глобальной областью, и var - let или const не будут добавлены к глобальному объекту.
Нет, нет (или, может быть, есть, но это не рекомендуется).