удалить экземпляр объекта класса- NodeJS - PullRequest
1 голос
/ 19 марта 2020

Я создал класс и инициализировал его, также я добавил функцию таймера внутри класса, затем я явно вызвал экземпляр класса в null, но функция таймера работает, мой вопрос: как мне удалить экземпляр класса из памяти? и как сделать недействительным таймер после того, как класс равен нулю

мой код выглядит следующим образом

class Person {
    constructor() {
      this.id = 'id_1';
    }
    timers(){
    const intervalObj = setInterval(() => {
        console.log('interviewing the interval');
      }, 3000);
    }
  }

  var justAGuy = new Person();
  justAGuy.timers()
  justAGuy = null

1 Ответ

1 голос
/ 19 марта 2020

Javascript - язык для сборки мусора. Вы не можете и не можете явно удалять объекты. Вместо этого вы очищаете любые ссылки на объект, так что ни один код не может достичь объекта. Это сделает его пригодным для сбора мусора, и сборщик мусора затем удалит его из памяти в будущем проходе G C.

В вашем объекте вы также должны остановить интервальный таймер, потому что пока он выполняется, тогда ваш объект может остаться в живых, потому что обратный вызов таймера имеет доступ к this, который ссылается на объект.

class Person {
     constructor() {
       this.id = 'id_1';
     }
     timers(){
        stop();
        this.intervalObj = setInterval(() => {
            console.log('interviewing the interval');
        }, 3000);
     }
     stop() {
         if (this.intervalObj) {
             clearInterval(this.intervalObj);
             this.intervalObj = null;
         }
     }

}

var justAGuy = new Person();
justAGuy.timers();
justAGuy.stop();
justAGuy = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...