Задать вопрос

Правильное удаление объекта в JS

Добрый день! Подскажите как правильно удалить объект имеющий примерную структуру:
Img = function(ID){
	var Images = this;
	this.getURL = function(){
		$.ajax({
			type: "GET",
			url: '/url/'+ ID +'.html',
			dataType: "json",
			success: function(json){
				// ОК		
			},
			error: function(xhr, ajaxOptions, thrownError){
				console.log(xhr.responseText);
				Images.TimerRestart(xhr.Error);
			}
		});
	}
	
	this.TimerRestart = function(){
		var timeout = 5;

		timer = setInterval(function(timeOut){
			timeOut--;
			obj.text( timeOut );

			if(timeOut == 0){
				Images.getURL();
				clearInterval(timer);
			}
		}, 1000, 10 );
	}	
}


создаю этот элемент:

var img = new Img(1);
img.getURL();

и потом не могу его удалить… пробовал через delete, присвоению null но все равно…
  • Вопрос задан
  • 25039 просмотров
Подписаться 8 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 3
Anonym
@Anonym
Программирую немного )
В JavaScript объект будет удален когда исчезнет последняя ссылка на него. Т.е. используя «деструктор», полностью удалить объект нельзя — можно только вычистить содержимое.
Ответ написан
vermilion1
@vermilion1
this.TimerRestart = function() {
  // timer = setInterval(function(timeOut){ // удалить
  this.timer = setInterval(function(timeOut) {
  // ....
}
this.clear = function() {
  clearInterval(this.timer);
}

// ...
img.clear(); // удаляем интервал
img = null;
Ответ написан
Комментировать
@lair
И не сможете, потому что вы внутри GetUrl захватываете сам объект в замыкание (для error), соответственно, жить он будет не меньше, чем время выполнения ajax.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы