
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Сообщ.
#1
,
|
|
|
Есть класс
![]() ![]() export class MatchThree { wrap = document.querySelector(".wrap"); constructor(rowscount, columnscount, tilescount) { this.game = new Game(rowscount, columnscount, tilescount); this.grid = new Grid(this.wrap, this.game.matrix); this.wrap.addEventListener("swap", (event) => { const firstelementposition = event.detail.firstelementposition; const secondelementposition = event.detail.secondelementposition; this.Swap(firstelementposition, secondelementposition); }); } async Swap(firstelementposition, secondelementposition) { const swapstates = this.game.Swap(firstelementposition, secondelementposition); await this.grid.Swap(firstelementposition, secondelementposition, swapstates); this.UpdateScore(); } UpdateScore() { document.querySelector(".box06").innerHTML = this.game.scorehero; } } Создается экземпляр класса с помощью new (понятие экземпляр класса я по привычке взял из С++, или в JS класс это что-то другое?) ![]() ![]() e.game = new MatchThree(8, 6, 4); А как его удалить ? Пробовал delete, remove, но что-то не получается. ![]() ![]() export class e { constructor() { let game = null; // <---- это типа глобальная переменная, не знаю как в JS их создавать // в С++, где строгая типизация, было понятно, а здесь черт его знает что это, где это и вообще трудно проконтролировать, // поскольку веб приложение, если не может выполнить просто игнорирует - крайне плохой подход } } delete e.game; |
Сообщ.
#2
,
|
|
|
В JavaScript удалить экземпляр класса в лоб, как в C++ (delete obj), нельзя — потому что управление памятью полностью автоматизировано через сборщик мусора (garbage collector).
Если иных ссылок на объект нет, достаточно выполнить: ![]() ![]() e.game = null; Cборщик мусора удалит всё сам. Более сложный случай, когда внутри класса что-то создаётся и это нужно разрушить - создай метод destroy(), в нем все очисти. Потом получится: ![]() ![]() e.game.destroy(); e.game = null; По идее так должно быть. |
Сообщ.
#3
,
|
|
|
Спасибо, нужно попробовать
|