Удалить экземпляр класса?

У меня есть класс, который был создан следующим образом:

function T() {
    this.run = function() {
        if (typeof this.i === 'undefined')
            this.i = 0;
        if (this.i > 10) {
            // Destroy this instance
        }
        else {
            var t = this;
            this.i++;
            setTimeout( function() {
                t.run();
            }, 1000);
        }
    }
}

Затем я инициализирую его как var x = new T();

Я не уверен, как уничтожить этот экземпляр изнутри один раз, если достигает 10 итераций.

Кроме того, я не уверен, как уничтожить его извне, если я хочу остановить его до того, как он достигнет 10.

Ответы

Ответ 1

Чтобы удалить экземпляр, в JavaScript вы удалите все ссылки, указывающие на него, чтобы сборщик мусора мог его вернуть.

Это означает, что вы должны знать переменные, содержащие эти ссылки.

Если вы просто назначили его переменной x, вы можете сделать

x = null;

или

x = undefined;

или

delete window.x;

но последний из них, как описано Ian, может работать, только если вы определили x как явное свойство window.

Ответ 2

Класс не одинаковые функции разные. Не работает удаление. Класс - это модификация системы.

class SAFunc {
  method1(){
    console.log("1");
  }
  method2(){
    console.log("2");
  }
}
let func  = new SAFunc();
func['method2']()

Try:

  • delete window['func'] - не работает
  • delete eval['func'] - не работает
  • delete window['SAFunc'] - не работает
  • ...
  • ...

Функция - удаление команды

method1 = function(){
  console.log("func1");
}
function method2() {
  console.log("func2");
}
var SAFunc = { method3: function() { console.log("func3"); } }

Сделайте ур тест... Попробуйте:

  • delete window['method1']
  • delete window['method2']
  • delete SAFunc['method3']

Хорошая забава! я люблю программировать

Назовите нас;)