Как посчитать количество объектов в классе?

Как посчитать количество объектов класса Menu, в данном примере:

class Menu {//Menu
  constructor(name) {//construct
	this.name = name;
	}//endconstruct
}//endMenu

menu1 = new Menu("меню1");
menu2 = new Menu("меню2");
menu3 = new Menu("меню3");
menu4 = new Menu("меню4");

alert("Сколько обектов в классе Menu?");
  • Вопрос задан
  • 1521 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вариант А. считать в конструкторе, как предложил Lynn «Кофеман» Такой вариант не учитывает удалённые объекты класса. Метода desctructor() в ECMAScript 6 не предусмотрено.
class Menu {
  static counter = 0;

  constructor(name) {
    this.name = name;
    ++Menu.counter;
  }
}

menu1 = new Menu("меню1");
menu2 = new Menu("меню2");
menu3 = new Menu("меню3");
menu4 = new Menu("меню4");

delete menu1;

console.log(Menu.counter); // 4


Вариант Б. Полагаться на родителя, хранящего ссылки на созданные инстансы. В данном случае это глобальный window. Тоже не лучший вариант, т.к. мало ли, где в коде содержатся ссылки на созданные объекты. Может, в анонимных функциях, вызванных по таймеру.
let count = 0;
for (obj in this) { // в примере this === window
  if (this[obj] instanceof Menu) ++count;
}
console.log(count); // 4
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы