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



@Valli94

Как посчитать количество объектов класса 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?");


Решения вопроса 1



@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



2

комментария


Ответы на вопрос 0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *