Удалить экземпляр класса?
У меня есть класс, который был создан следующим образом:
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']
Хорошая забава! я люблю программировать
Назовите нас;)